2017-06-16 42 views
2

有一個帶有值的table1和帶有掩碼的table2。如何計算(計數)基礎級別相應掩碼(SQL)的值數量?SQL中相應掩碼的計數值

Table1 (id, value) 
1, man; 
2, human; 
3, green; 
4, white; 

Table2 (id, mask_value) 
1, *man; 
2, gr*n; 

第一掩膜(⚹人)相匹配的人,人 - 計數2 第二掩模(GR ⚹ n)的匹配綠色 - 計數1 計數器總價值3

回答

1

你可以改變*到SQL通配符 '%' 然後compare without escapinglike 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)