首页 新闻 会员 周边 捐助

数据库TEXT字段,要匹配几百个地名,返回这个字段中所有匹配的地名字符串

0
悬赏园豆:20 [待解决问题]

数据库TEXT字段,要匹配几百个地名,返回这个字段中所有匹配的地名字符串
比如:
TEXT
上海,北京,深圳,广州
长沙,深圳
深圳
匹配字符串:上海,深圳
返回的TEXT:
上海,深圳
深圳
深圳

Willy_Jiang的主页 Willy_Jiang | 初学一级 | 园豆:4
提问于:2020-08-19 17:49
< >
分享
所有回答(5)
0

应该把:上海,深圳拆分为上海 深圳单独去匹配

通信的搞程序 | 园豆:1757 (小虾三级) | 2020-08-19 20:05
0

写个 函数吧。函数里完成,拆分 匹配

flyfishing | 园豆:943 (小虾三级) | 2020-08-20 09:11

举个例子呢

支持(0) 反对(0) Willy_Jiang | 园豆:4 (初学一级) | 2020-08-20 10:15
0

两种方式吧,第一种先查询包含了指定地名的数据,find_in_set,匹配到了,再自己去匹配取出需要的数据,第二种直接查出mysql里的全部数据,再去匹配每行里的字段

风行天下12 | 园豆:3867 (老鸟四级) | 2020-08-20 09:34

find_in_set一次只能匹配一个字符串吧,匹配几百个地名,写几百次吗

支持(0) 反对(0) Willy_Jiang | 园豆:4 (初学一级) | 2020-08-20 10:16

@Willy_Jiang: 多个的话要么find_in_set() or find_in_set,或者where CONCAT(",", 字段名, ",") REGEXP ",(val1|val2|val3),"

支持(0) 反对(0) 风行天下12 | 园豆:3867 (老鸟四级) | 2020-08-20 12:31

@风行天下12: 查出数据容易,问题是我怎么返回TEXT字段里匹配的多个地名

支持(0) 反对(0) Willy_Jiang | 园豆:4 (初学一级) | 2020-08-20 16:15
0

先在代码里面将 上海,深圳,转化成 %上海%,%深圳% 的数组,然后sql里面用 ( TEXT like %上海%) or (TEXT like ,%深圳%),这种方式可以实现,从性能上考虑不推荐这种实现,最好业务系统接入ES搜索,通过ES实现性能会好很多

yangwqonly | 园豆:202 (菜鸟二级) | 2020-08-20 11:05
0

可以在数据库里面使用正则表达式进行匹配,但是效率很低,一般都不会在数据库里面做的。
如果数据量不大,可以在应用层先查询出所有数据后,在应用层进行过滤;
如果数据量很大,则可以使用ES,效率很高,并且支持大数据量。

寻觅beyond | 园豆:923 (小虾三级) | 2020-08-27 10:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册