IF() statement alternative in SQLite

前端 未结 3 975
甜味超标
甜味超标 2020-12-03 06:57

I have the code for MySQL (perl):

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

I

3条回答
  •  离开以前
    2020-12-03 07:34

    For generic SQL you can use CASE:

    CASE is used to provide if-then-else type of logic to SQL. Its syntax is:

    SELECT CASE ("column_name")
      WHEN "condition1" THEN "result1"
      WHEN "condition2" THEN "result2"
      ...
      [ELSE "resultN"]
      END
    FROM "table_name"
    

    From http://www.sqlite.org/lang_expr.html section "The CASE expression"

    E.g.

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

    Another link about SQLite & CASE (with example of update with subselect) http://sqlite.awardspace.info/syntax/sqlitepg09.htm

    CASE can be used in UPDATE in generic SQL, but I have no info about SQLite support of UPDATEs with CASE

    http://www.craigsmullins.com/ssu_0899.htm section "Using CASE Expressions When Modifying Data"

提交回复
热议问题