TSQL varchar строковое управление - PullRequest
2 голосов
/ 03 апреля 2009

У меня есть переменная, которая содержит следующую строку: AL, CA, TN, VA, NY

У меня нет контроля над тем, что я получаю в этой переменной (исходит от служб отчетов)

Мне нужно, чтобы это выглядело так: 'AL', 'CA', 'TN', 'VA', 'NY'

Как мне это сделать?

Ответы [ 5 ]

3 голосов
/ 03 апреля 2009
declare @x varchar(50) = 'AL,CA,TN,VA,NY'

select '''' + REPLACE(@x, ',', ''',''') + ''''
1 голос
/ 03 апреля 2009

Я закончил тем, что делал что-то очень похожее, что я решил опубликовать. (Однако я отдам должное Митчу)

Это заботится о середине:

SET @StateList = REPLACE (@StateList, ',', '' ',' '')

Затем процитируйте края:

SET @ WhereClause1 = @ WhereClause1 + 'AND customerState IN (' '' + @StateList + '' ')'

0 голосов
/ 14 июля 2009

Я хочу знать, работает ли следующий скрипт на SQL, а не на T-SQL


ОБЪЯВИТЬ @tblName varchar (30) SET @tblName = CONVERT (VARCHAR (20), GETDATE (), 112) + «Таблица»

ОБЪЯВИТЬ @sql nvarchar (4000) SELECT @sql = 'CREATE TABLE "' + @tblName + '" ( ID VARCHAR (15), Имя VARCHAR (15) ) '

EXEC (@sql)

1010 * идти * выдает ошибку Msg 170, Sev 15: строка 1: неправильный синтаксис рядом с таблицей 20090714. [SQLSTATE 42000]

0 голосов
/ 03 апреля 2009

Не беспокойтесь о динамических sql.

Вам нужно преобразовать строку в таблицу так А, В, С, D

становится

Значение В С D

с использованием такой функции, как http://www.sqlusa.com/bestpractices/training/scripts/splitcommadelimited/

тогда вы можете использовать CROSS APPLY (что похоже на присоединение к таблице, но к таблице, созданной функцией) или вы можете просто поместить ее в переменную таблицы и присоединиться к ней

0 голосов
/ 03 апреля 2009

Для более общего ответа, когда вы не знаете, как будет выглядеть ваш вывод, используйте регулярные выражения .

Это позволит вам сопоставить что-то вроде [A-Z] {2} и заменить его на '$ &'.

Комментатор предположил, что это слишком для этой задачи - согласен, если вы можете гарантировать, что вы всегда получите такую ​​строку. Однако другие люди позже находят эти страницы с похожими, но не точными проблемами, поэтому полезно иметь другие варианты.

...