【问题标题】:SQL CASE statement IS NULL syntax errorSQL CASE 语句 IS NULL 语法错误
【发布时间】: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]

标签: sql ms-access if-statement null case


【解决方案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。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
相关资源
最近更新 更多