PostgreSQL 逗号分隔字符串交集个数计算方法
假设有两个逗号拼接的字符串,分别为 'str1' 和 'str2',我们可以按照以下步骤求出其交集个数:
- 使用
string_to_array函数将字符串转换为数组,同时以逗号为分隔符。
SELECT string_to_array('str1', ',') AS arr1, string_to_array('str2', ',') AS arr2;
- 使用
unnest函数将数组展开成多行数据。
SELECT unnest(string_to_array('str1', ',')) AS value1, unnest(string_to_array('str2', ',')) AS value2;
- 使用
inner join将两个展开后的表格进行联结,只保留value1=value2的行。
SELECT unnest(string_to_array('str1', ',')) AS value1, unnest(string_to_array('str2', ',')) AS value2
FROM (SELECT string_to_array('str1', ',') AS arr1, string_to_array('str2', ',') AS arr2) AS t
WHERE value1 = value2;
- 使用
count函数统计联结后的行数即可得到交集个数。
SELECT count(*) AS intersection_count
FROM (
SELECT unnest(string_to_array('str1', ',')) AS value1, unnest(string_to_array('str2', ',')) AS value2
FROM (SELECT string_to_array('str1', ',') AS arr1, string_to_array('str2', ',') AS arr2) AS t
WHERE value1 = value2
) AS t2;
注意:以上查询语句中的 'str1' 和 'str2' 需要替换为实际的字段名或字符串值。
原文地址: https://www.cveoy.top/t/topic/nE81 著作权归作者所有。请勿转载和采集!