postgresql NOT ILIKE子句不包括空字符串值

postgresql NOT ILIKE子句不包括空字符串值,第1张

概述这是 Postgresql 9.2.4上的设置: CREATE TABLE table ( id integer NOT NULL, some_text text); 现在我们输入一个记录,一个null或空字符串为some_text,所以当我们查询: SELECT * FROM table WHERE some_text IS NULL; 我得到回来到现在为止还挺好. 但是,当我 这是 Postgresql 9.2.4上的设置:
CREATE table table (    ID integer NOT NulL,some_text text);

现在我们输入一个记录,一个null或空字符串为some_text,所以当我们查询:

SELECT * FROM table WHERE some_text IS NulL;

我得到回来到现在为止还挺好.

但是,当我查询:

SELECT * FROM table WHERE some_text NOT IliKE "%anything%';

我发现没有任何回报.这是为什么?我希望一个空或空字符串是“不像任何东西”.

在sql中,NulL不等于任何东西.任何事情也不平等.

换句话说,如果我不告诉你我的中间名,你不告诉我你的中间名,我们怎么知道我们的两个中间名是相同的名字或不同的名字?我们不知道

这通常会在sql中跳过人,因为它是“三值逻辑”.表达式可以为TRUE,FALSE或UNKNowN.我们熟悉布尔代数的人知道NOT TRUE是FALSE,NOT FALSE是TRUE.

但棘手的部分是NOT UNKNowN仍然是UNKNowN.

因此,您的解决方案始终在列中存储非空字符串,否则请使用表达式来解释三值逻辑:

SELECT * FROM table WHERE some_text NOT IliKE "%anything%' OR some_text IS NulL;

要么:

SELECT * FROM table WHERE COALESCE(some_text,'') NOT IliKE '%anything%';

Postgresql还支持一个null-safe equality operator:

SELECT * FROM table WHERE some_text IS disTINCT FROM 'anything';

但不幸的是,这只适用于平等,而不是使用模式和通配符的liKE / IliKE.

总结

以上是内存溢出为你收集整理的postgresql NOT ILIKE子句不包括空字符串值全部内容,希望文章能够帮你解决postgresql NOT ILIKE子句不包括空字符串值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1170404.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存