我有一张桌子:
c1|c2|c3|c4
-----+--+--+----
a b c 10
a a b 20
c a c 10
b b c 10
c b c 30
我想编写一个函数,其中输入是 3 个字符串/文本,例如(' abc,bd,c '),将每个元素相互比较,查找此组合是否存在一行,以及第 4 个(c4 ) 列向上。但是,如果有bac或cab的星座, 它将匹配abc 10。如果有像bcc这样的行,那么它不会是像cbb这样的行。每场比赛都是独一无二的。
我认为最好的方法是使用 string_to_array(text, text)。
我整理了一些伪代码,但不知道如何用 SQL 编写它。也许逻辑也是错误的。
function (x,y,z)
res = 0
x_array = string_to_array(x, ' ')
y_array = string_to_array(y, ' ')
z_array = string_to_array(z, ' ')
foreach(x_item in x_array)
foreach(y_item in y_array)
foreach(z_item in z_array)
if (c1 = (x_item || y_item || z_item ) && c2 = (x_item || y_item || z_item ) && c3 = (x_item || y_item || z_item ))
res++
编辑
- 首先,示例表中有一个错误。有一行abc和cba。不可能。abc = cba!并且每一行必须是唯一的。
- 示例:三个文本输入 abc | 公元前| C
- 每个元素与每个元素: abc 、 acc 、 bbc 、 bcc 、 cbc 、 ccc
- abc = 10; acc (与cac相同) = 10; 英国广播公司= 10; bcc(与cbc相同)= 30; CBC = 30; ccc(不匹配)= 0;结果 = 90