有一个带有值的table1和带有掩码的table2。如何计算(计数)基本级别相应掩码的值数(SQL)?
Table1 (id, value)
1, man;
2, human;
3, green;
4, white;
Table2 (id, mask_value)
1, *man;
2, gr*n;
第一个面具(⚹man)匹配男人和人 - 计数2 第二个掩码(gr⚹n)匹配绿色 - 计数1 反总值3
答案 0 :(得分:1)
您可以将*
更改为sql通配符'%',然后compare without escaping like escape ''
,例如:
t=# select *
from ta
join tb on ta.value like translate(tb.mask_value,'*','%') escape ''
;
id | value | id | mask_value
----+-------+----+------------
1 | man | 1 | *man
2 | human | 1 | *man
3 | green | 2 | gr*n
(3 rows)
相应的计数将是:
t=# select count(1)
from ta
join tb on ta.value like translate(tb.mask_value,'*','%') escape ''
;
count
-------
3
(1 row)