[英]Count of empty values in string array in PostgreSQL
我想檢查 Projects 列值對於 PartNo 和 PartName 列的所有相同值是否具有相同的值。 項目列數據類型是字符 variyng[]。 例如:
型號 | 零件名稱 | 項目 |
---|---|---|
1個 | 3個 | 6;5 |
1個 | 3個 | |
1個 | 3個 | |
3個 | 2個 | 5;5 |
在這種情況下,對於相同的 PartName(3) 和 PartNo(1),Projects 具有不同的值 (6;5) 和 ()。
這是我的查詢,但它不適用於項目列中的空字符 variyng[]!
SELECT COUNT(*) from (
select c.partno, c.partname
FROM unnest(items) as c
GROUP BY c.partno, c.partname
HAVING COUNT(distinct c.projects) > 1) as xxx
INTO errCount;
IF errCount > 0 THEN
RETURN QUERY
SELECT 0 as status, format('Projects value should be the same for all Codes of the Part No %s and Name %s',c.partno,c.partname) as message
FROM unnest(items) as c
GROUP BY c.partno, c.partname
HAVING COUNT(distinct c.projects) > 1
;
RETURN;
END IF;
在項目中有兩個不同值(不是空數組)的情況下,它有效。
您可以使用這樣的查詢
合並
將數組[null]中的null轉換為null的函數
WITH tt AS (
SELECT
partno,
partname,
COALESCE ( project, ARRAY [null] ) AS pro
FROM
tab1
) SELECT
*,
COUNT ( pro ) AS num
FROM
tt
GROUP BY
partno,
partname,
pro
創建測試表:
CREATE TABLE "tab1" (
"pk" serial4 primary key,
"partno" int4,
"partname" int4,
"project" varchar[]
);
INSERT INTO "tab1" (partno,partname,project) VALUES ( 1, 3, '{6,5}');
INSERT INTO "tab1" (partno,partname,project) VALUES ( 1, 3, NULL);
INSERT INTO "tab1" (partno,partname,project) VALUES ( 1, 3, NULL);
INSERT INTO "tab1" (partno,partname,project) VALUES ( 3, 2, '{5,5}');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.