3

У меня есть хранимая процедура, которая принимает в качестве ввода строку GUID и выбирает из таблицы where table GUID IN (@Param).Использование uniqueidentifier с условием IN в SQL-сервере

@Param = 'b2e16cdc-1f1b-40e2-a979-f87a6a2457af, 
c275dd13-bb54-4b8c-aa12-220b5980cabd, 
af3552ec-37b1-4a76-81ad-1bd6b8c4cd6c, 
3a7fda02-558b-49a9-a870-30350254d8c0,' 
    SELECT * FROM dbo.Table1 WHERE 
    TableGUID IN (@Param) 

Однако, я заметил, что запрос возвращает значения, только если совпадает первый идентификатор GUID, иначе он ничего не вернет. что означает, что он сравнивается только с первым GUID в строке. Кто-нибудь знает, как решить проблему?

+0

Почему бы не использовать отдельную переменную для всех значений и присвоить диапазон, как IN (@ Param1, @ Param2, @ Param3 ...)? – vendettamit

+0

SQL, как правило, с большинством языков, когда передается ** одиночный ** параметр, который является строкой, не будет проверять содержимое строки, находить запятые и решать вместо этого рассматривать параметр * single * как ** multiple * *, возможно, даже другого типа данных. Зачем вам это ожидать? –

+0

Было бы лучше определить вашу хранимую процедуру, чтобы принять параметр соответствующего типа данных, который ** разработан ** для хранения нескольких отдельных значений. В SQL Server есть два таких типа: табличные параметры или xml. –

ответ

1

В дополнении к ответу MikkaRin в: а GUID должен быть незакрытыми в апострофах, так что значение параметра должно выглядеть 'b2e16cdc-1f1b-40e2-a979-f87a6a2457af', 'c275dd13-bb54-4b8c-aa12-220b5980cabd', 'af3552ec-37b1-4a76-81ad-1bd6b8c4cd6c', '3a7fda02-558b-49a9-a870-30350254d8c0'

В конце концов, вы должны пройти что-то вроде: @Param = '''b2e16cdc-1f1b-40e2-a979-f87a6a2457af'', ''c275dd13-bb54-4b8c-aa12-220b5980cabd'', ''af3552ec-37b1-4a76-81ad-1bd6b8c4cd6c'', ''3a7fda02-558b-49a9-a870-30350254d8c0'''

Обратите внимание на последнюю запятую списка. Его следует удалить.

+1

Это также не работает Получение ошибки «Ошибка преобразования при преобразовании из символьной строки в uniqueidentifier. " –

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

  • Нет связанных вопросов^_^