table1
:
编码|分类
ABC|ZMLND_XY_ABCtable2
:
类别|标签
MLND|3
ZMLND|4
如果table1
的category
被_
分隔的部分等于table2
的category
,我想将table1
的category
Map到table2
的label
。例如,table1
中的ZMLND_XY_ABC
与table2
中的ZMLND
匹配,而ZMLND_XY_ABC
和MLND
中的MLND
不匹配。
查询:
select * from table1 left join table2 on '_'||table1.category||'_' like '%_'||table2.category||'_%'
结果:
code | category | category_1 | label
ABC | ZMLND_XY_ABC | MLND | 3 <- _MLND_ should not match
_ZMLND_XY_ABC_
ABC | ZMLND_XY_ABC | ZMLND | 4
但是,我将_
替换为,
:table1
:
编码|分类
ABC|ZMLND,XY,ABC
select * from table1 left join table2 on ','||table1.category||',' like '%,'||table2.category||',%'
结果:
Code|类别|CATEGORY_1|标签
-|-|
ABC|ZMLND,XY,ABC|ZMLND|4
为什么会有不同的结果呢?
1条答案
按热度按时间ubof19bj1#
由于SQLITE
like
,_
和%
一样是一个特殊的字符。如您所知,
%
匹配多个字符。您似乎错过了
_
匹配任何单个字符。比较,例如https://www.sqlitetutorial.net/sqlite-like/
看一下关于
ESCAPE
可选语法部分的https://www.sqlite.org/lang_expr.html,它可能有助于您编写查询。