Вернуть одно значение, используя GUID - PullRequest
0 голосов
/ 26 сентября 2019

Цель моего запроса - вернуть одно значение в зависимости от того, является ли столбец F39 пустым (нулевым) или или дата «больше или равна сегодня»

Как уникальный идентификатор, который у меня есть XPARG, то есть GUID.

SELECT XPARG,XPARTBL,F38,F39 FROM T_TRANS1309 
WHERE T_TRANS1309.XPARG = N'b2365922-cb63-f976-4c1c-ccd50443b4d4'  AND T_TRANS1309.F39 IS NULL OR T_TRANS1309.F39 >= CONVERT(NVARCHAR,getdate() ,102)

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

1 Ответ

3 голосов
/ 26 сентября 2019

У вас есть проблема с приоритетом оператора, AND больше OR, поэтому ваш запрос эффективен:

SELECT XPARG,XPARTBL,F38,F39 FROM T_TRANS1309 
WHERE (T_TRANS1309.XPARG = N'b2365922-cb63-f976-4c1c-ccd50443b4d4'  AND T_TRANS1309.F39 IS NULL) OR T_TRANS1309.F39 >= CONVERT(NVARCHAR,getdate() ,102)

, что означает, что он также выбирает любую строку с датой> = сегодня.То, что вы хотите:

SELECT XPARG,XPARTBL,F38,F39 FROM T_TRANS1309 
WHERE T_TRANS1309.XPARG = N'b2365922-cb63-f976-4c1c-ccd50443b4d4'  AND (T_TRANS1309.F39 IS NULL OR T_TRANS1309.F39 >= CONVERT(NVARCHAR,getdate() ,102))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...