0

이 내가 내 응용 프로그램에서했던 Linq에 - 투 - 엔티티 쿼리의 거친 SQL 번역했다1 = 1은 T-SQL에서 False를 반환합니다 - 왜?

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 

아래의 미리보기를보고하십시오. InvoicingActivityStartDay 수있는 두 가지 값은 1과 20

이 같은 행이 조각의 결과이다 : 그것은 두 번째 행에 대해 동일하지 반환 이유

InvoicingActivityStartDay Column1 Column2 
1       1  NOT EQUAL 
20      1  NOT EQUAL 

내가 이해; 하지만 1 = 1 인 첫 번째 행에 대해 왜 동등하지 않습니까?

+0

'InvoicingActivityStartDay'의 유형은 무엇입니까? –

+0

@ FrédéricHamidi NVARCHAR (2); 그러나 숫자 만 보유하고 있습니다. – FMFF

+0

문자열이 실제로 ''1 ''이 아니라' '1' '인지 확인 했습니까? (뒷 공간에주의하십시오.) –

답변

0

InvoicingActivityStartDay은 문자열입니까? SELECT STR(CAST(DATEPART (day, getdate()) AS float))은 문자열을 반환합니다. 정수 비교를 원하십니까?

+0

정확합니다. 문자열입니다. – FMFF

+4

@Stu 답장이 아닌 댓글로 게시해야합니다. – Taryn

+3

@bluefeet - 당신은 50 명의 담당자가 코멘트 할 수 없으므로 그렇게 할 수 없었습니다. –

관련 문제