【发布时间】:2020-10-12 06:08:23
【问题描述】:
社区。p>
我在 SQLITE 中有一个非常典型的任务。
如果 X 返回 Y,否则返回 Z。
为此,我使用了 CASE 语句
“当 X THEN Y ELSE Z END 时的情况”。
但是,我在官方文档中发现了 IIF 功能
https://sqlite.org/lang_corefunc.html#iif
iif(X,Y,Z) 如果 X 为真,则 iif(X,Y,Z) 函数返回值 Y,否则返回 Z。 iif(X,Y,Z) 函数在逻辑上等价于并生成与 CASE 表达式“CASE WHEN X THEN Y ELSE Z END”相同的字节码。
但是当试图运行这样的功能时,我得到一个错误。
执行完成但出现错误。 结果:没有这样的功能:iif
这个函数有什么问题?根据官方文档,应该有这样的功能。
【问题讨论】:
-
This answer 在 Stack Overflow 上说该函数是在 SQLite 3.32.0 中引入的。顺便说一句,我通过在网上搜索“iif function sqlite”找到了这个,它是最好的结果之一。
-
case是 ANSI SQL 标准且可移植。 -
不要打扰
IIF()。没有理由在 SQLite 中编写向后兼容 MS Access 的代码。