2015-04-23 4 views
0

У меня есть параметр @Tag nvarchar(max), который входит в мою хранимую процедуру, подобную этой '(15000338, 15000339)'. Он может иметь только одно значение или с двумя или более значениями.Формат преобразования формата

Как это можно преобразовать в ('15000338','15000339')? Я пробовал использовать замену, но я не могу добраться до конечного результата, который мне нужен.

+0

Вы хотите таблицу в качестве результата или строки? –

+0

Я хочу строку, но я не хочу, чтобы она была обернута одинарными кавычками. –

+0

Вы строите динамическое предложение IN? Если это так, вы должны быть очень осторожны с SQL-инъекцией. – dman2306

ответ

1
REPLACE(REPLACE(REPLACE(REPLACE(@Tag,' ',''),'''(','('''),')''',''')'),',',''', ''') 

Я считаю, что будет делать то, что вы хотите, но опять же, я обеспокоен тем, основываясь на том, что он кажется, что вы делаете, вы можете быть уязвимы для атак с внедрением SQL.

+0

Спасибо, и я ценю вашу заботу. Люди в моей компании не знают SQL, кроме моего собственного босса, который бы не напал на нас. –

+0

Если я задал неправильный вопрос, позвольте мне его пересмотреть здесь? Я не могу заставить это работать, поэтому я хотел бы попробовать получить этот вывод (вместо того, который я попросил). Это тот же результат минус круглые скобки, что и так: «15000338», «15000339». Я пытаюсь пересмотреть заявление о замене, которое вы мне дали без везения. –

+0

P.S. Все еще пытаюсь и все ближе. , , –

1

Вы можете сделать это с заменой:

DECLARE @s NVARCHAR(max) = '(15000338, 15000339)' 
SELECT @s = REPLACE(REPLACE(REPLACE(REPLACE(@s, ' ', ''), '(', '('''), ')', ''')'), ',', ''',''') 

Выход:

('15000338',' 15000339') 
+1

Ваш результат неверен, см. Мой ответ. У вас есть значение 2 как «15000339» не «15000339» – dman2306

+0

Правильно, я не заметил места. Спасибо. –

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