Postgresql:如何在使用 WHERE col NOT LIKE "foo" 時獲取空值?

德文大行

WHERE子句與NOT LIKEon一起使用my_text_columnnull將跳過值。

為什麼以及如何獲得它?

SELECT count(id) FROM public.mytable;
 count 
-------
    91
SELECT count(id) FROM public.mytable WHERE my_text_column LIKE 'foo';
 count 
-------
    59
SELECT count(id) FROM public.mytable WHERE my_text_column NOT LIKE 'foo';
 count 
-------
     0
勞倫茲·阿爾伯

SQL 標準對 Framework 4.4.2 中的 NULL 進行了說明:

[...]的空值既不等於為任何其他值,也沒有不等於任何其它值-它是未知它是否等於任何給定值[...]

在 4.4.3.3 中它說:

所述的值的布爾數據類型將是未知的真值有時用空值表示。

它以一種古怪的方式表示,將某些內容與 NULL 值進行比較將導致 NULL。可以這樣想:未知字符串是否像foo.

有幾種方法可以得到你想要的東西:

  1. 使用coalesce

    WHERE coalesce(my_text_column, 'foo') LIKE 'foo%'
    
  2. 使用OR

    WHERE my_text_column LIKE 'foo%' OR my_text_column IS NULL
    
  3. 使用UNION ALL

    SELECT count(id)
    FROM (SELECT id FROM public.mytable
          WHERE my_text_column LIKE 'foo%'
          UNION ALL
          SELECT id FROM public.mytable
          WHERE my_text_column IS NULL) AS subq;
    

像這樣的查詢使索引變得複雜。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

“WHERE foo”和“WHERE foo IS TRUE”在 PostgreSQL 中是等价的吗?

Bigquery SQL - WHERE IN Col 值

WHERE col IN查询以空数组为参数

獲取 JSON 時對空值錯誤使用的空檢查運算符

使用 PySpark 而不是 HUE 讀取數據時獲取空值

SQL SELECT WHERE Col 值是 = 字符串

如何获取Foo <?>对象的<?>值?

當鍵值不是數組時,使用 ansbile json_query 時獲取空值

PostgreSQL - 如何使用 WHERE 获得 0 值?

匹配时使用GAS搜索col A并返回col B的值

如何在mongodb查询中编写SELECT FROM testing WHERE int_col + int_col2 > 123?

如何搜索子字符串(WHERE列,如'%foo%')

如果col 1与col 3相同,如何用X替换col 4中的值,否则使用awk用col 2替换col 4中的每个条目

postgresql如何在where语句中使用布尔值

postgresql:如何在where子句中使用变量(行的某个列值)

如何在WHERE <值> IN子句中使用PostgreSQL json_array_elements

如何查询表col的多个值

如何基于列表删除多个col值

如何根据col值进行选择

如何获取 col 和 row 值?

如何使用同一df中其他col的信息更改一个col值

使用@ModelAttribute 獲取對象綁定的空值

Hibernate - 獲取時應用@Where

使用 pandas col 以 dict 格式存储 % 的值

使用哪个:foo和foo:

如何在PostgreSQL中每个组(名称,col1)的最新collect_time上获得总和(值)?

在col C的某些值下,如何根据col A是否大于col B的平均值来改变新列?

Pandas - 如果在 (col B) 中观察到列 (col A) 中的值,则使用来自 (col C) 的值创建列 (col D)

如何“插入表1(col1,col2)值,从表2选择col1,从表3选择col2”

Laravel 查询 where col1 != col2