IF() statement alternative in SQLite(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 & 的链接案例(以子选择更新为例)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() 语句替代的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:SQLite 中的 IF() 语句替代


- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
- 更改自动增量起始编号? 2021-01-01
- 导入具有可变标题的 Excel 文件 2021-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
- SQL 临时表问题 2022-01-01