在postgres中使用ilike或like连接表时如何使用特殊字符?
How to use special characters while joining tables using ilike or like in postgres?
我在 postgres 中有以下表格:
TABLE1:
col1 col2
NCT03009058 nivolumab (opdivo)
NCT03009059 pembrolizumab (keytruda)
NCT03009060 zumab
NCT03009061 pembrolizumab-keytruda
TABLE2:
col1 col2
1 nivolumab
2 opdivo
2 pembrolizumab
3 keytruda
3 zumab
4 pembrolizumab
3 keytruda
5 0.4% lidocaine hydrochloride and 5% dextrose injection
我想在 col2 上加入上面的表格,但是 'like' 和 'ilike' 忽略了有特殊字符的行。我想在像“|;|-|/|(|)”这样的连接时使用特殊字符的组合 我怎样才能获得以下结果?
期望的输出是:
col1 col2 col3
NCT03009058 nivolumab (opdivo) nivolumab
NCT03009058 nivolumab (opdivo) opdivo
NCT03009059 pembrolizumab (keytruda) keytruda
NCT03009059 pembrolizumab (keytruda) pembrolizumab
NCT03009060 zumab zumab
NCT03009061 pembrolizumab-keytruda keytruda
NCT03009061 pembrolizumab-keytruda pembrolizumab
这里的任何建议都会很有帮助。谢谢
我有一些接近的东西:
select *
from table1 join table2
on to_tsvector(table1.col2) @@ to_tsquery(table2.col2);
col1 | col2 | col1 | col2
-------------+--------------------------+------+---------------
NCT03009058 | nivolumab (opdivo) | 1 | nivolumab
NCT03009058 | nivolumab (opdivo) | 2 | opdivo
NCT03009059 | pembrolizumab (keytruda) | 3 | pembrolizumab
NCT03009061 | pembrolizumab-keytruda | 3 | pembrolizumab
NCT03009060 | zumab | 3 | zumab
NCT03009059 | pembrolizumab (keytruda) | 3 | keytruda
NCT03009061 | pembrolizumab-keytruda | 3 | keytruda
NCT03009059 | pembrolizumab (keytruda) | 4 | pembrolizumab
NCT03009061 | pembrolizumab-keytruda | 4 | pembrolizumab
(9 rows)
所以我找到了解决这个问题的方法。我没有使用 to_tsquery,而是使用了普通的 to_tsquery 并且成功了!!
我在 postgres 中有以下表格:
TABLE1:
col1 col2
NCT03009058 nivolumab (opdivo)
NCT03009059 pembrolizumab (keytruda)
NCT03009060 zumab
NCT03009061 pembrolizumab-keytruda
TABLE2:
col1 col2
1 nivolumab
2 opdivo
2 pembrolizumab
3 keytruda
3 zumab
4 pembrolizumab
3 keytruda
5 0.4% lidocaine hydrochloride and 5% dextrose injection
我想在 col2 上加入上面的表格,但是 'like' 和 'ilike' 忽略了有特殊字符的行。我想在像“|;|-|/|(|)”这样的连接时使用特殊字符的组合 我怎样才能获得以下结果?
期望的输出是:
col1 col2 col3
NCT03009058 nivolumab (opdivo) nivolumab
NCT03009058 nivolumab (opdivo) opdivo
NCT03009059 pembrolizumab (keytruda) keytruda
NCT03009059 pembrolizumab (keytruda) pembrolizumab
NCT03009060 zumab zumab
NCT03009061 pembrolizumab-keytruda keytruda
NCT03009061 pembrolizumab-keytruda pembrolizumab
这里的任何建议都会很有帮助。谢谢
我有一些接近的东西:
select *
from table1 join table2
on to_tsvector(table1.col2) @@ to_tsquery(table2.col2);
col1 | col2 | col1 | col2
-------------+--------------------------+------+---------------
NCT03009058 | nivolumab (opdivo) | 1 | nivolumab
NCT03009058 | nivolumab (opdivo) | 2 | opdivo
NCT03009059 | pembrolizumab (keytruda) | 3 | pembrolizumab
NCT03009061 | pembrolizumab-keytruda | 3 | pembrolizumab
NCT03009060 | zumab | 3 | zumab
NCT03009059 | pembrolizumab (keytruda) | 3 | keytruda
NCT03009061 | pembrolizumab-keytruda | 3 | keytruda
NCT03009059 | pembrolizumab (keytruda) | 4 | pembrolizumab
NCT03009061 | pembrolizumab-keytruda | 4 | pembrolizumab
(9 rows)
所以我找到了解决这个问题的方法。我没有使用 to_tsquery,而是使用了普通的 to_tsquery 并且成功了!!