假设有两个逗号拼接的字符串,分别为 'str1' 和 'str2',我们可以按照以下步骤求出其交集个数:

  1. 使用 string_to_array 函数将字符串转换为数组,同时以逗号为分隔符。
SELECT string_to_array('str1', ',') AS arr1, string_to_array('str2', ',') AS arr2;
  1. 使用 unnest 函数将数组展开成多行数据。
SELECT unnest(string_to_array('str1', ',')) AS value1, unnest(string_to_array('str2', ',')) AS value2;
  1. 使用 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;
  1. 使用 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' 需要替换为实际的字段名或字符串值。

PostgreSQL 逗号分隔字符串交集个数计算方法

原文地址: https://www.cveoy.top/t/topic/nE81 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录