请查看下面的代码段
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?
答案 0 :(得分:0)
InvoicingActivityStartDay
是一个字符串吗? SELECT STR(CAST(DATEPART (day, getdate()) AS float))
返回一个字符串。你期待整数比较吗?