4

为什么这会在等号上引发错误?

select IIF((SUBSTRING('A1234', 1, 1) = 'A'), TRUE, FALSE) as IsAustraliaUser

错误:

消息 102,级别 15,状态 1,第 1 行
'=' 附近的语法不正确。

4

3 回答 3

6

IIF是 SQL Server 2012 的一项功能,您需要使用CASE

SELECT CASE SUBSTRING('A1234', 1, 1)
       WHEN 'A' THEN 'TRUE'
       ELSE 'FALSE'
       END
于 2013-09-13T14:45:53.507 回答
1

您应该用 CASE 替换 IIF,SQL Server 中也不存在 TRUE 和 FALSE,您可以使用 VARCHAR 或 BIT

select CASE WHEN SUBSTRING('A1234', 1, 1) = 'A' THEN 'TRUE' ELSE 'FALSE' END as IsAustraliaUser
于 2013-09-13T14:44:07.360 回答
1

我认为 SQL 不支持这种 IIF 语法(除非您使用的是 2012),请替换为大小写。

SELECT  CASE WHEN ( SUBSTRING('A1234', 1, 1) = 'A' ) THEN 'TRUE'
             ELSE 'FALSE'
        END AS IsAustraliaUser
于 2013-09-13T14:44:10.397 回答