首页 > 解决方案 > SQL Server 无效的列名和字符串值

问题描述

我有来自 SQL Server 存储过程的以下代码片段。

    DECLARE @sql nvarchar(Max)

    SET @sql = N'

    WITH CTE AS
    (
      SELECT * FROM #TEMP WHERE ...
    ),

    Track AS
    (
      SELECT *,
              CASE WHEN 1B1 = "Track" AND (QTRK_1B1 = "2D QT" OR QTRK_1B1 = "3D QT") THEN "Yes" ELSE "No" END AS Tracking
      FROM CTE
    ),
    ... '

Exec sp_executesql @sql, N'@AirTarget nvarchar(25), @GroundTracker nvarchar(25)', @AirTarget, @GroundTracker

我不确定我在这里做错了什么。当我执行存储过程时,我收到如下错误:

列名“跟踪”无效

列名“2D QT”无效

列名“3D QT”无效

无效的列名“是”

无效的列名“否”

但这些不是表中的列名。我用谷歌搜索,无法弄清楚我做错了什么。

我尝试用单引号将这些值括起来,并尝试从这些值周围删除引号,但没有任何效果。任何帮助,将不胜感激

标签: sqlsql-serverstored-procedures

解决方案


SQL'对字符串使用单引号

CASE 
    WHEN 1B1 = ''Track'' AND (QTRK_1B1 = ''2D QT'' OR QTRK_1B1 = ''3D QT'') THEN ''Yes'' 
    ELSE ''No'' 
END AS Tracking

推荐阅读