2009-06-24 2 views
7

У меня есть динамический запрос, в котором я хочу конкатенировать uniqueidentifier, но операторы + и & не поддерживают это, есть способ, которым я могу объединить uniqueidentifier в динамическую строку. Любой образец или какая-либо помощь в этом отношении будет очень полезной.Как объединить uniqueidentifier в динамическом запросе

ответ

9

Вы пробовали кастинг или преобразование в строку сначала, а затем подравнивание?

CAST(NEWID() AS NVARCHAR(36)) 
+0

Я попробовал это, он не работает, давая неправильный синтаксис рядом с отливом или конвертируйте, если im конвертирует –

+0

@Yaser: «SELECT CAST (NEWID() AS NVARCHAR (36))». Попробуйте сами подумать. – gbn

+0

Извините, дорогие мои друзья, где это условие: ГДЕ (СозданоBy = CAST (@p_CreatedBy AS NVARCHAR (100))) здесь @CreatedBy - уникальный идентификатор Я даже попытался преобразовать его, не получив никакого результата. Пожалуйста, помогите –

7

Я знаю, что это старый, но я натолкнулся на этот пост, пытаясь понять то же самое, и проблема в том, что у меня не было достаточно «S вокруг моего уникального идентификатора. Я в основном был:

'SELECT * FROM Interface WHERE ID = '' + CAST(@InterfaceID AS NVARCHAR(36)) + '' AND 1 = 1'

я получил ошибку говоря неправильный синтаксис около 00A (первая часть из GUID). Проблема заключается в том, что это было разбора:

SELECT * FROM Interface WHERE ID = 00A3F5B5-C7B3-4128-B03A-EADE79129F40 AND 1 = 1

Изменяя мой запрос:

'SELECT * FROM Interface WHERE ID = ''' + CAST(@InterfaceID AS NVARCHAR(36)) + ''' AND 1 = 1'

с три апострофа я получил:

SELECT * FROM Interface WHERE ID = '00A3F5B5-C7B3-4128-B03A-EADE79129F40' AND 1 = 1

который является верный.

Надеюсь, что помогает.

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