gpt4 book ai didi

sql - 在 mssql 中评估 bool 返回值 - 可能吗?

转载 作者:行者123 更新时间:2023-12-02 05:45:18 28 4
gpt4 key购买 nike

我正在尝试:

select tbl.*, (true and true) as booleanTest
from tbl

哪个ms-sql好像不领情。 (关键字“and”附近的语法不正确)

由于无知,我认为这是标准的 ANSI 东西。

问:上面是否可以用更通用的sql语法来表达?

最佳答案

SQL Server 不支持标准 SQL BOOLEAN数据类型,记住它是一种非常奇怪的 bool 值,它具有三个值!代替 BOOLEAN文字值,您必须替换为所需真值的表达式,例如

( 1 = 1 )      -- TRUE
( 0 = 1 ) -- FALSE
( 1 = NULL ) -- UNKNOWN

我通常这样写代码(按照你的例子):

SELECT tbl.*, 
CASE
WHEN ( ( 1 = 1 ) AND ( 1 = 1 ) ) THEN 'TRUE'
WHEN NOT ( ( 1 = 1 ) AND ( 1 = 1 ) ) THEN 'FALSE'
ELSE 'UNKNOWN'
END AS result
FROM tbl;

正如@Diego 所暗示的(我认为!),在传统逻辑中我们可以应用 idempotence rewrite rule ,它指出

( P AND P )   <= is equivalent to =>   ( P )

碰巧,该规则适用于 SQL 的三值逻辑。

例如SQL Server 中案例的证明 ( UNKNOWN AND UNKNOWN ) <=> UNKNOWN :

SELECT CASE 
WHEN ( 1 = NULL) AND ( 1 = NULL ) THEN 'TRUE'
WHEN NOT ( 1 = NULL) AND ( 1 = NULL ) THEN 'FALSE'
ELSE 'UNKNOWN'
END AS result

关于sql - 在 mssql 中评估 bool 返回值 - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10347420/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com