2016-05-16 2 views
3

У меня есть следующий запрос:SQL с использованием ЗАМЕНИТЬ на одном из многочисленных колонн

SELECT * FROM MailingList 

Есть около 20+ столбцов в MailingList стол, один из которых называется Адрес. В этом столбце есть поля, содержащие запятые, которые мне нужно вынуть. Так что я обновил свой запрос:

SELECT REPLACE(Address, ',', '') AS Address, * FROM MailingList 

Но теперь у меня есть два Адрес колонны. Есть ли способ показать только один столбец , все еще используя подстановочный знак (*) для всех остальных столбцов?

+0

Есть ли причина, по которой вы не можете назвать ее «AddressNoCommas» или что-то подобное? –

+0

Лучше всего избегать выбора * и выбирать ТОЧНО столбцы, которые вам нужны. Скрипты SSMS для вас Sql-запрос легко. С *, нет, у вас не может быть одного адреса, но с правильным выбором столбцов вы можете. – shadow

+0

Я часто этого желал, но, вероятно, это не очень хорошая идея ... Я использую SSMS, выбираю топ 1000 для создания списка избранного и заменяю столбцы, о которых идет речь. В вашем случае замените поле адреса оператором replace. По крайней мере, это экономит все набрав. Если вам не нравится формат, вы можете создать хранимую процедуру, чтобы вернуть список выбора в выбранном вами формате. –

ответ

3

Невозможно сделать это, хотя перечисление столбцов, которые вы хотите явно, является хорошей идеей.

1

Вы можете обмануть, как следующий запрос:

  1. Получить данные в временную таблицу
  2. уронить cloumns, которые не нужны
  3. Получить результаты и темп падения таблицы


SELECT *, REPLACE(Address, ',', '') AS Address2 
INTO #TempTable 
FROM MailingList 

ALTER TABLE #TempTable 
    DROP COLUMN [Address] 

SELECT * FROM #TempTable 
DROP TABLE #TempTable 
0

Я согласен с Тенью - избегать использования * джокер, если вы можете ...

Я знаю, перечисляя все столбцы в операторе отбора для больших таблиц является боль, так вот быстрый короткий путь вы можете не знать: в SQL Server Management Studio просмотрите проводник объектов и найдите таблицу, которую вы хотите выбрать (MailingList). Щелкните его правой кнопкой мыши, чтобы просмотреть контекстное меню и выберите «Таблица сценариев как», затем «ВЫБРАТЬ», затем «Окно редактора новых запросов». Это создаст новый оператор select с указанием каждого столбца. В будущем используйте этот метод для создания операторов выбора, запросов, процедур и т. Д., А не подстановки *. Производительность лучше, и она выглядит лучше :-)

Тогда вы можете решить проблему с псевдонимами с помощью функции замены.

Смежные вопросы