복붙노트

[SQL] SQLite는의 IF () 문의 대안

SQL

SQLite는의 IF () 문의 대안

내가 MySQL을 (펄)에 대한 코드를 가지고 :

UPDATE pages
SET rkey = rkey + 2,
    lkey = IF(lkey >= $key, lkey + 2, lkey)
WHERE rkey >= $key

나는 SQLite는이 코드를 사용할 필요하지만, IF () 함수의 지원은 없습니다. 내가 할 수있는 것?

해결법

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

    1.일반적인 SQL 위해 당신은 CASE를 사용할 수 있습니다 :

    일반적인 SQL 위해 당신은 CASE를 사용할 수 있습니다 :

    http://www.sqlite.org/lang_expr.html "절 CASE 표현식"에서

    EG

    UPDATE pages
    SET rkey = rkey + 2,
        lkey = CASE  WHEN lkey >= $key THEN lkey + 2 ELSE lkey END
    WHERE rkey >= $key
    

    (부속와 업데이트의 예와) SQLite는 & CASE에 대한 또 다른 링크 http://sqlite.awardspace.info/syntax/sqlitepg09.htm

    CASE는 일반적인 SQL의 UPDATE에서 사용할 수 있습니다,하지만 난 CASE와 업데이트 SQLite는 지원에 대한 아무런 정보가 없다

    http://www.craigsmullins.com/ssu_0899.htm "절 CASE 표현식을 사용하면 데이터 수정"

  2. ==============================

    2.

    UPDATE pages
    SET rkey = rkey + 2,
        lkey = IF(lkey >= $key, lkey + 2, lkey)
    WHERE rkey >= $key
    

    ??? 그것에

    UPDATE pages
    SET lkey = lkey + 2
    WHERE rkey >= $key AND lkey >= $key
    
    UPDATE pages
    SET rkey = rkey + 2,
    WHERE rkey >= $key
    

    더 나은 아닌가요?

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

    3.SQLite는 버전 3.32.0 및 최신 지원 IIF.

    SQLite는 버전 3.32.0 및 최신 지원 IIF.

    EG

    UPDATE pages
    SET rkey = rkey + 2,
        lkey = IIF(lkey >= $key, lkey + 2, lkey)
    WHERE rkey >= $key;
    
  4. from https://stackoverflow.com/questions/4874285/if-statement-alternative-in-sqlite by cc-by-sa and MIT license