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 语法错误的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句中=null和is null

SQL语句case怎么判断这个字段为空

WHERE子句中的SQL Server CASE表达式以检查NULL值

如何在不同条件的sql server的case语句中插入多个else?

Informix SQL — CASE 语句中的错误

postgreSQL计算总数sum if case when