1 = 1在T-SQL中返回False - 为什么?

时间:2012-03-20 18:31:49

标签: c#-4.0 entity-framework-4 linq-to-entities sql-server-2008-r2

请查看下面的代码段

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

这是我在应用程序中遇到的Linq-to-Entities查询的粗略SQL翻译。 InvoicingActivityStartDay的两个可能值是1和20.

此代码段产生如下行:

InvoicingActivityStartDay Column1 Column2
1                         1       NOT EQUAL 
20                        1       NOT EQUAL 

我明白为什么它会为第二行返回NOT EQUAL;但为什么在1 = 1的第一行返回NOT EQUAL?

1 个答案:

答案 0 :(得分:0)

InvoicingActivityStartDay是一个字符串吗? SELECT STR(CAST(DATEPART (day, getdate()) AS float))返回一个字符串。你期待整数比较吗?