42

我正在使用 SQLite 数据库。我的表有一个名为“密码”的文本列。之前用于检索我用来执行简单select * from myTable查询的值。但现在的要求是,如果密码值不是,NULL那么我需要将其显示为“是”或“否”。它是这样的:

select * from myTable
if Password != NULL then Password = 'Yes'
else Password = 'No'

我对此进行了很多搜索,但没有得到任何正确的链接或示例。任何帮助或建议将不胜感激。

4

4 回答 4

71
SELECT *,
       CASE WHEN Password IS NOT NULL
       THEN 'Yes'
       ELSE 'No'
       END AS PasswordPresent
FROM myTable
于 2013-01-29T10:45:01.180 回答
19

SQLite 使用 CASE WHEN THEN END 语法。您可以在此处阅读更多相关信息:http ://www.sqlite.org/lang_expr.html

我没有检查语法,但我猜是这样的:

select * 
from myTable CASE WHEN Password != NULL THEN Password = 'Yes' ELSE Password = 'No' END;

虽然我不确定这是否会起作用。如果您尝试根据表中每条记录的密码是否存在来获得“是”或“否”,那么这可能更接近您想要的:

SELECT Field1, 
    Field2,
    (CASE WHEN Password != NULL THEN 
        'Yes' 
     ELSE 
        'No' 
     END) as 'Password'
FROM myTable;

同样,我目前无法访问 SQLite 来自己测试它,所以它可能需要一些工作。

于 2013-01-29T10:09:51.523 回答
3

我知道如果密码列中已写入密码,我们希望将密码列的值更改为“是”,否则我们将值更改为“否”。

我们可以使用以下两个查询来进行这些更改:

UPDATE myTable SET Password = "YES" WHERE Password IS NOT NULL;    
UPDATE myTable SET Password = "NO" WHERE PASSWORD IS NULL;
于 2020-08-29T02:50:16.580 回答
0

您可以使用IIF()SQLite v3.32.0+ 中的函数来进一步缩短代码:

SELECT
  Password,
  IIF(Password IS NOT NULL, 'Yes', 'No') [HasPassword]
于 2021-11-24T16:56:37.557 回答