数据库TEXT字段,要匹配几百个地名,返回这个字段中所有匹配的地名字符串
比如:
TEXT
上海,北京,深圳,广州
长沙,深圳
深圳
匹配字符串:上海,深圳
返回的TEXT:
上海,深圳
深圳
深圳
应该把:上海,深圳拆分为上海 深圳单独去匹配
写个 函数吧。函数里完成,拆分 匹配
举个例子呢
两种方式吧,第一种先查询包含了指定地名的数据,find_in_set,匹配到了,再自己去匹配取出需要的数据,第二种直接查出mysql里的全部数据,再去匹配每行里的字段
find_in_set一次只能匹配一个字符串吧,匹配几百个地名,写几百次吗
@Willy_Jiang: 多个的话要么find_in_set() or find_in_set,或者where CONCAT(",", 字段名
, ",") REGEXP ",(val1|val2|val3),"
@风行天下12: 查出数据容易,问题是我怎么返回TEXT字段里匹配的多个地名
先在代码里面将 上海,深圳,转化成 %上海%,%深圳% 的数组,然后sql里面用 ( TEXT like %上海%) or (TEXT like ,%深圳%),这种方式可以实现,从性能上考虑不推荐这种实现,最好业务系统接入ES搜索,通过ES实现性能会好很多
可以在数据库里面使用正则表达式进行匹配,但是效率很低,一般都不会在数据库里面做的。
如果数据量不大,可以在应用层先查询出所有数据后,在应用层进行过滤;
如果数据量很大,则可以使用ES,效率很高,并且支持大数据量。