SQL CASE 语句 IS NULL 语法错误
Posted
技术标签:
【中文标题】SQL CASE 语句 IS NULL 语法错误【英文标题】:SQL CASE statement IS NULL syntax error 【发布时间】:2014-08-06 08:02:52 【问题描述】:我对 SQL 很陌生,我正在尝试做一个 IF 语句。这是我的代码,希望您能够发现问题所在。提前致谢!
SELECT [data1].[Last Name]+", "+[First Name] AS Name,
[data1].[User ID],
(CASE WHEN [Kla] IS null THEN [Nr] ELSE [Kla]+"-"+[Nr] END) AS [Course Code]
FROM [data1], [data2]
语法错误(缺少运算符)'(CASE WHEN [Kla] IS null THEN [Nr] ELSE [Kla]+"-"+[Nr] END)'
我从 Excel 导入的两个表(data1 和 data2)在 Microsoft Access 中运行它
【问题讨论】:
你遇到了什么错误? 两个表中是否存在 [Kla] 或 [Nr] 列? 你使用什么样的数据库? 抱歉,我收到语法错误(缺少运算符)'(CASE WHEN [Kla] IS null THEN [Nr] ELSE [Kla]+"-"+[Nr] END)'。 [Kla] 和 [Nr] 仅存在于 [data2] 【参考方案1】:试试这个:
SELECT [data1].[Last Name]+", "+[First Name] AS Name,
[data1].[User ID],
IIF(ISNULL([Kla]),[Nr],[Kla]+"-"+[Nr]) AS [Course Code]
FROM [data1], [data2]
AFAIK,您不能在 Access 中的 CASE
语句中包含 NULL 检查,因此我建议您改用 IIF
。
【讨论】:
你是如何引发这个错误的?当我尝试选择columnName + "-" + columnName
时,我得到 Invalid column name '-'
而不是 operator missing
这也是我遇到的错误,这就是为什么我添加了关于在 SQL Server 上测试它的说明。无效的列名是正确的错误,因为双引号将包含的内容标记为列/表名。
columnName + "-" + columnName 在我添加 CASE 语句之前有效,所以我认为不是这样。
您使用什么 DBMS 来执行此操作?事实上,你是如何运行这个查询的?请在您的问题中添加这些详细信息。
不客气。但是,如果您在发布问题时提到您正在使用 Access,我们会更快地到达那里。每个 DBMS 都有一些独特的功能,这些功能对于理解问题可能很重要,因此您必须指定您正在使用的 DBMS。以上是关于SQL CASE 语句 IS NULL 语法错误的主要内容,如果未能解决你的问题,请参考以下文章
WHERE子句中的SQL Server CASE表达式以检查NULL值