1 = 1 возвращает False в T-SQL - почему? - PullRequest
0 голосов
/ 20 марта 2012

Пожалуйста, посмотрите на фрагмент ниже

DEClaRE @p__linq__0 datetime
SET @p__linq__0 = '2012-02-01 00:00:00'
SELECT (STR( CAST( DATEPART (day, @p__linq__0) AS float)))
SELECT  
InvoicingActivityStartDay,
(STR(CAST( DATEPART (day, @p__linq__0) AS float))),
            CASE WHEN STR(CAST(DATEPART (day, @p__linq__0) AS float))=    InvoicingActivityStartDay THEN 'EQUAL' ELSE 'NOT EQUAL' END
FROM INVOICEMETADATA

Это был грубый перевод SQL запроса Linq-to-Entities, который был у меня в приложении. Два возможных значения для InvoicingActivityStartDay: 1 и 20.

Этот фрагмент кода приводит к таким строкам:

InvoicingActivityStartDay Column1 Column2
1                         1       NOT EQUAL 
20                        1       NOT EQUAL 

Я понимаю, почему он возвращает НЕ РАВНО для второго ряда; но почему он возвращает НЕ РАВНО для первой строки, где 1 = 1?

1 Ответ

0 голосов
/ 20 марта 2012

InvoicingActivityStartDay строка? SELECT STR(CAST(DATEPART (day, getdate()) AS float)) возвращает строку. Ожидаете ли вы целочисленное сравнение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...