遇到这个问题首先想的是要如何排查?
分析问题
“falsetrue” 这样的字符串不是合法的布尔类型表示方式,因为布尔类型只能是 True
或 False
。如果你遇到了类似的错误消息,可能是因为代码中出现了类似错误的字符串拼写或者逻辑错误。
要排查这个问题,你可以检查代码,确保所有的布尔类型表示都是正确的。另外,你可以搜索代码中的 “falsetrue”,看看是不是误写或者错误使用导致了这个问题。
排查问题
找到sql中有没有false相关的位置,下方第四行可以看到 || 为问题点。我是一行一行执行的,看到哪一行报错,加上第三行和第四行的条件就报错了。
and ((A.ast in (1, 16, 20, 21, 23, 24, 25, 712, 713, 717, 718, 720) and A.st in (1, 3, 11, 13, 21) and
A.ap in (11, 12, 14))
OR (A.ast in (1, 16, 20, 21, 23, 24, 25, 712, 713, 717, 718, 720) and
((A.st IN (1, 3, 11, 13, 21)) || (A.status IN (0, 2, 10, 12, 20))) and A.ap = 13)
OR (A.ast in (2, 17, 26) and A.st in (2, 3, 4, 5, 6, 7, 8) and A.ap= 15));