SELECT
STRING_AGG(
CASE
WHEN POSITION('o' IN string1) = position OR POSITION('o' IN string2) = position THEN 'o'
WHEN SUBSTRING(string1 FROM position FOR 1) = 'a' AND SUBSTRING(string2 FROM position FOR 1) = 'a' THEN 'a'
ELSE 'o'
END,
''
) AS result
FROM
(SELECT 'oaaoaa' AS string1, 'aoaoao' AS string2, generate_series(1, LENGTH('oaaoaa')) AS position) t
2条答案
按热度按时间mzsu5hc01#
您选择了错误的数据类型。您应该采用
varbit
而不是text
或varchar
,那么|
就可以完成您想要的任务。您仍然可以通过将字符转换为0和1并将数据转换为`varit'来实现您的目标:m1m5dgzv2#
这通过生成一系列长度来迭代字符串的每个字符位置,因此两个字符串必须具有相同的长度。如果位置中的任何字符为o,则o else a。
fiddle