2017-02-17 6 views
0

По какой-то причине я не могу использовать сравнения по столбцам GUID, он не возвращает никаких результатов.Использование GUID в разделе Where

См. Ниже, при условии, что предложение WHERE установлено в точное значение столбца «secguid», оно не возвращает никаких результатов. Что происходит?

SELECT * FROM dbMobileFile 

SELECT * FROM dbMobileFile WHERE secguid = '3137459D-EFDE-449E-94A3-89345A8580FA' 

SELECT * FROM dbMobileFile WHERE secguid LIKE '3137459D-EFDE-449E-94A3-89345A8580FA' 

Использование LIKE также не работает.

enter image description here

enter image description here

+0

подбирайте secguid в тех случаях, когда пункт –

+0

Пожалуйста, покажите ваш 'LIKE' запрос. И попробуйте использовать текст в вопросе (в дополнение к изображениям) – Sangharsh

+2

Можете ли вы подтвердить определение таблицы? В частности, 'secguid' определяется как' uniqueidentifier'? –

ответ

1

Поскольку вы упоминаете, что столбец хранится как NVARCHAR, его возможно, что строка имеет начальные или конечные пробелы, поэтому она не может быть выскакивают в запросе с WHERE статья.

Вы можете попробовать это:

SELECT  [fileID], 
      [fileCOde], 
      [filePassword], 
      [fileDescription], 
      [rowguid], 
      [secguid] 
FROM  [dbo].[dbMobileFile] 
WHERE  LTRIM(RTRIM(secguid)) = '3137459D-EFDE-449E-94A3-89345A8580FA' 

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

Кроме того, в случае, если вы хотите, чтобы сделать использование оператора LIKE, вы можете написать запрос как:

SELECT  [fileID], 
      [fileCOde], 
      [filePassword], 
      [fileDescription], 
      [rowguid], 
      [secguid] 
FROM  [dbo].[dbMobileFile] 
WHERE  secguid = '%3137459D-EFDE-449E-94A3-89345A8580FA%' 

Надеется, что это помогает !!!

+0

Оба этих решения будут иметь ужасную производительность Правильное решение, конечно, состояло бы в том, чтобы изменить столбец 'secguid', чтобы фактически быть директором. – Magnus

+0

@ Magnus Согласен. Это лучшее решение. Однако я не знал (во время ответа), если OP имеет свободу для модификации таблицы (например, если его живое приложение с подключением edmx поддерживается кем-то другим). Что касается вопроса, как получить результат с предложением WHERE, это будет (хотя и не лучшим решением, которое Я полностью согласен). –

0

Попробуйте

SELECT  [fileID], 
      [fileCOde], 
      [filePassword], 
      [fileDescription], 
      [rowguid], 
      [secguid] 
FROM  [dbo].[dbMobileFile] 
WHERE  CAST(secguid as uniqueidentifier) = CAST('3137459D-EFDE-449E-94A3-89345A8580FA' as uniqueidentifier) 
Смежные вопросы