为什么 UPDATE x SET y='c' AND TRUE 导致 y='0'

Why does UPDATE x SET y='c' AND TRUE result in y='0'

我正在玩一个 SQL 挑战并注意到给定一个 table x 和一个 TEXTy 下面的查询:

UPDATE x SET y='c' AND TRUE

结果 y='0'

还有:

UPDATE x SET y='c' OR TRUE

结果 y='1'

出于好奇,我试图了解下面发生的事情以产生这些结果。

因为实际发生的是:

UPDATE x SET y=('c' AND TRUE)

UPDATE x SET y=('c' OR TRUE)

'c' 作为布尔值计算为 0

表达式 y='c' AND TRUEy='c' OR TRUEBoolean expressions。当表达式为真时,它们的计算结果为 1,当表达式为假时,它们的计算结果为 0

您的 update 计算这些表达式,并将它们的结果存储回字段 y