这个T-SQL语句有什么问题?

时间:2013-09-13 14:40:29

标签: sql sql-server tsql

为什么这会在等号上抛出错误?

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

错误:

  

Msg 102,Level 15,State 1,Line 1
  '='附近的语法不正确。

3 个答案:

答案 0 :(得分:6)

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

SELECT CASE SUBSTRING('A1234', 1, 1)
       WHEN 'A' THEN 'TRUE'
       ELSE 'FALSE'
       END

答案 1 :(得分:1)

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

select CASE WHEN SUBSTRING('A1234', 1, 1) = 'A' THEN 'TRUE' ELSE 'FALSE' END as IsAustraliaUser

答案 2 :(得分:1)

我认为SQL不支持IIF的这种语法(除非你使用2012),用case替换。

SELECT  CASE WHEN ( SUBSTRING('A1234', 1, 1) = 'A' ) THEN 'TRUE'
             ELSE 'FALSE'
        END AS IsAustraliaUser