[英]SQL Server Invalid Column Name and String Value
我有一个来自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
我不确定我在做什么错。 执行存储过程时,出现如下错误:
无效的列名“ Track”
无效的列名“ 2D QT”
无效的列名“ 3D QT”
无效的列名“是”
无效的列名“否”
但是这些不是表中的列名。 我已经用Google搜索,无法弄清楚我在做什么错。
我尝试用单引号将这些值引起来,并且尝试将这些值周围的引号删除,但没有任何效果。 任何帮助,将不胜感激
SQL对字符串使用单引号'
CASE
WHEN 1B1 = ''Track'' AND (QTRK_1B1 = ''2D QT'' OR QTRK_1B1 = ''3D QT'') THEN ''Yes''
ELSE ''No''
END AS Tracking
它们绝对应该是单引号-在所有带有双引号的地方。 如果这样做,至少应该给您不同的信息。
您还需要将1B1
用方括号括起来,例如[1B1]
因为它不喜欢CASE
语句中以数字开头的列名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.