복붙노트

[SQL] SQL 서버 2008 IIF 문을 사용할 것 같지 않습니다

SQL

SQL 서버 2008 IIF 문을 사용할 것 같지 않습니다

나는 선택 성명에서 IIF ()를 사용하는 것을 시도하고있다. 필즈 값은 빈 문자열 같으면 대수식 확인합니다. 구문과 같이이다 :

SELECT IIF(field = '','ONe action','Another')

나는 오류 "= 근처의 구문 오류"를 얻고있다

나는 간단한 테스트를 시도했다 :

SELECT IIF(2 > 1, 'yes','no')

나는 "> 근처의 구문 오류"는 무엇입니까

이 IIF가 전혀 작동하지 않는 것을 믿고 저를 선도하고 있습니다.

내가 SQL 서버 2008 R2를 사용하고, 요구 사항이 작업에 IIF ()을 허용하도록 구성 할 수 있음이 뭔가? 내가 놓치고있는 구문에 대한 뭔가인가? 하고 나는 여전히 구문 오류를 얻을 수있는 내 테스트는 간단하다.

어떤 도움을 주시면 감사하겠습니다. 고맙습니다!

해결법

  1. ==============================

    1.언급 한 바와 같이, IIF는 SQL2012 기능입니다.

    언급 한 바와 같이, IIF는 SQL2012 기능입니다.

    (SQL 2012 어쨌든 어떻게 할 것인지 어느) 경우와 IIF 교체

     SELECT CASE field WHEN '' THEN 'ONe action' ELSE 'Another' END
    
  2. ==============================

    2.IFF는 SQL 서버 2012 그래서 사용 '사례'대신에게 문의 시작합니다.

    IFF는 SQL 서버 2012 그래서 사용 '사례'대신에게 문의 시작합니다.

    당신은 SQL에서 더 컴팩트 한 폼 서버 2008 (대신 케이스의 기능)을 찾고 있다면 당신은 사용할 수 있습니다 :

    isnull((select 'yes' where 2 > 1),'no')
    

    대신에:

    SELECT IIF(2 > 1, 'yes','no')
    

    그런 다음 문은 다음과 같습니다

    SELECT ISNULL (( '예'를 선택 곳에 2> 1), '아니오')

  3. ==============================

    3.그게 SQL Server 2008 또는 SQL Server 2008 R2의 일을하지 않는 이유 그래서 IIF는 SQL 서버 2012 년에 도입되었다.

    그게 SQL Server 2008 또는 SQL Server 2008 R2의 일을하지 않는 이유 그래서 IIF는 SQL 서버 2012 년에 도입되었다.

  4. ==============================

    4.

    DECLARE @a int=45
    
    DECLARE @b int=40
    
    SELECT   
          CASE 
             WHEN @A>@B THEN 'True'
    
     ELSE 'FALSE'         
          END
    

    대신 IIF의이 솔루션을 사용할 수 있습니다.

  5. from https://stackoverflow.com/questions/11540753/sql-server-2008-iif-statement-does-not-seem-enabled by cc-by-sa and MIT license