计算SQL中相应掩码的值

时间:2017-06-16 08:49:18

标签: sql postgresql

有一个带有值的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

1 个答案:

答案 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)