代码之家  ›  专栏  ›  技术社区  ›  David.Warwick

SQL Server列名和字符串值无效

  •  0
  • David.Warwick  · 技术社区  · 7 年前

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

        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
    

    列名“Track”无效

    列名“2D QT”无效

    列名“3D QT”无效

    列名“No”无效

    我试过用单引号括住这些值,也试过去掉这些值周围的引号,但什么都不起作用。任何帮助都将不胜感激

    2 回复  |  直到 6 年前
        1
  •  3
  •   Eric    7 年前

    SQL使用单引号 ' 对于字符串

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

    它们肯定都应该是单引号-所有你有双引号的地方。如果 你这么做至少会给你一个不同的信息。

    你还需要包起来 1B1 在方括号中,如 [1B1] 因为它不喜欢以数字开头的列名 CASE 声明。

    推荐文章