首页 > 解决方案 > SQLite 到 TSQL - 案例语句

问题描述

我有一个最初是 sqllight 的查询,我正在尝试将其转换为 MS sql server 。相当简单的一个,但 SQL Server 不喜欢下面的行给出错误

在预期条件的上下文中指定的非布尔类型表达式,靠近“WHEN”。

CASE account NOT LIKE '%.restricted' AND usertype  

我认为它需要更像下面,但我不清楚“和用户类型”。数据库中的用户类型目前是 1 或 2,但它确实允许空值。

CASE when  account  NOT LIKE '%.restricted' AND usertype  
SELECT username 
 
       ,Count(CASE account NOT LIKE '%.restricted' AND usertype  
                WHEN 1 THEN 1 
                ELSE NULL 
              END) AS Numberaccounts
FROM   users u
WHERE  u.Deleted = '' 
GROUP  BY  u.username

不确定 and 用户类型在 sqllite 中是如何工作的。我认为它会为任何非零或非空返回 true。不确定如何返工该部分。

标签: sql-serversqlite

解决方案


在 SQLite 中,0被评估为FALSE并且任何非NULL和非零值都被评估为TRUE
所以CASE表达式可以写成:

CASE WHEN account NOT LIKE '%.restricted' AND usertype <> 0

这在 TSQL 中也有效。


推荐阅读