Sql server 查询中的未知列

Sql server 查询中的未知列,sql-server,Sql Server,对此我有一个小想法,但我不知道如何在SQL Server(MSDN)中解释它 之后,我收到一条错误消息: 味精207、Niveau 16、爱达1、利昂3 非有效名称:“SNI” 您显示的SQL在上下文之外没有多大意义 出于某种原因,服务器将常量SNI解释为列名。将字符串常量括在双单引号中,而不是双引号中: IF ('DateReception' is not NULL) AND ('DateMovement' is NULL) SET @Requete = DATEDIFF (

对此我有一个小想法,但我不知道如何在SQL Server(MSDN)中解释它

之后,我收到一条错误消息:

味精207、Niveau 16、爱达1、利昂3
非有效名称:“SNI”


您显示的SQL在上下文之外没有多大意义


出于某种原因,服务器将常量SNI解释为列名。

将字符串常量括在双单引号中,而不是双引号中:

IF ('DateReception' is not NULL) AND ('DateMovement' is NULL) 
        SET @Requete = DATEDIFF (dd, @EndDatereq, 'DateReception')
        SET @Requete = 'SELECT A.[AutomatonStatus]
            FROM dbo.Automatons A
            WHERE ((A.AutomatonStatus = ''SNI'') OR (A.AutomatonStatus = ''PAI'') OR (A.AutomatonStatus = ''INP'') OR (A.AutomatonStatus = ''INT''))'

双引号标记标识符(列名等),而不是字符串。

“消息207,16级,状态1,第3行列名'SNI'无效。英语,svp。如果没有答案,请不要评论。这是浪费时间。还有一个问题,我想将NVARCHAR转换为DATE,我还想使DATEDIFF。
IF ('DateReception' is not NULL) AND ('DateMovement' is NULL) 
        SET @Requete = DATEDIFF (dd, @EndDatereq, 'DateReception')
        SET @Requete = 'SELECT A.[AutomatonStatus]
            FROM dbo.Automatons A
            WHERE ((A.AutomatonStatus = ''SNI'') OR (A.AutomatonStatus = ''PAI'') OR (A.AutomatonStatus = ''INP'') OR (A.AutomatonStatus = ''INT''))'