在SQL的Wikipedia页面上,有一些关于SQL中布尔逻辑的真值表.[1]维基百科页面似乎源于SQL:2003标准.
equals运算符(=)的真值表与SQL:2003草案中的IS运算符不同.
此外,维基百科文章指出"IS NULL"(<null predicate>)是一种特殊情况.
在SQL:2003中,似乎有一个"IS"操作符,它是一个常规运算符,如AND,NOT和OR.但是,<null谓词>仍然存在.
当IS是常规布尔运算符时,为什么<null谓词>存在?它是否确保您可以使用具有非布尔值的"IS NULL"构造而不使用类型coersion?不鼓励使用"= NULL"吗?
SQL:2011标准的工作方式不同吗?
[1]:关于SQL的维基百科
[2]:SQL:2011草案 PDF第335页
[3]:SQL:2003草案 PDF第397页
所以我现在在一个网站上,它有一个交互式的MySQL Shell提示符.
我正在查询一个朋友问的问题是"当我使用关键字时查询失败IS但是当我使用=符号时它会起作用吗?"
所以我测试了它,果然它确实失败了.
SELECT name, continent, population FROM world WHERE continent IS 'Asia'失败但SELECT name, continent, population FROM world WHERE continent = 'Asia'工作正常.
我试过谷歌搜索答案但无济于事.
任何帮助都会很棒!