SQLite中的IF()语句替代 [英] IF() statement alternative in SQLite

查看:86
本文介绍了SQLite中的IF()语句替代的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有MySQL代码(perl):

I have the code for MySQL (perl):

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

我需要在SQLite中使用此代码,但不支持IF()函数。我能做什么?

I need to use this code with SQLite, but there is no support of IF() function. What I can do?

推荐答案

对于通用SQL,您可以使用 CASE

For generic SQL you can use CASE:


CASE用于向SQL提供if-then-else类型的逻辑。它的语法是:

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"


来自 http:/ /www.sqlite.org/lang_expr.html 部分CASE表达式

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

例如

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

另一个链接关于SQLite& CASE(带有subselect的更新示例) http://sqlite.awardspace.info/syntax/sqlitepg09.htm

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

CASE可以在通用SQL的UPDATE中使用,但我没有关于SQLite对带有CASE的UPDATE的支持的信息

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 修改数据时使用CASE表达式

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

这篇关于SQLite中的IF()语句替代的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆