数据库 字段 【SQL】如何在数据库中实现多表联合查询时采用字段模糊匹配?

模糊匹配。干货~

在Excel中实现模糊查询用到的方法还是挺多的,比如函数、查询等。

那在数据库中是否也可以实现呢?

答案是可以的,本篇就来聊聊数据库中多表联合查询时如何采用字段模糊匹配。

讲解还是按老风格,用案例说话。

明确需求

假设有两张表,test1表需要匹配tese2表的内容,但是两张表的字段并不完全相同。

需要实现的结果

看似好像并不难,实际也不难,可以用两个方法实现,继续往下看~

方法一 【INSTR 函数】

MySQL中的INSTR(STR,)函数,是指在一个字符串(STR)中搜索指定的字符(),返回发现指定的字符的位置(INDEX)。

STR:被搜索的字符串;

:希望搜索的字符串;

结论:在字符串(STR)里面,指定字符()出现的第一个位置(INDEX),INDEX是从1开始计算,如果没有找到就直接返回0,没有返回负数的情况。

回到案例,来看看案例代码

======================= 代码 ===================
SELECT a.ID AS aID, a.username AS aname, b.newID AS bID, b.newname AS bname FROM test1 a, test2 b WHERE instr( a.username, b.newname )> 0 OR instr( b.newname, a.username )> 0 ORDER BY a.ID

(代码可以向右滑动)

讲解

数据库 字段 【SQL】如何在数据库中实现多表联合查询时采用字段模糊匹配?

两张表连接的条件中使用了instr函数,用来判断字符串是否包含。

判断了两次;

第一次是a表的字符串是否包含b表的字符。

第二次是b表的字符串是否包含a表的字符。

方法二【 函数】

MySQL中的(S1,S2,SN)函数,是指合并多个字符串。

类似Excel中的连接符(&)。

回到案例,来看看案例代码

===================== 代码 =====================
SELECT a.ID AS aID, a.username AS aname, b.newID AS bID, b.newname AS bname FROM test1 a, test2 b WHERE a.username like concat('%',b.newname,'%') or b.newname like concat('%',a.username,'%')ORDER BY a.ID

(代码可以向右滑动)

讲解

两张表连接的条件中使用了LIKE模糊查询和函数,用来模糊查看对应的字段。

函数其作用是将字段的左右两端连接上(%),再由LIKE判断是否包含。

同样是判断两次;

第一次是a表的字符串是否包含b表的%%字符。

第二次是b表的字符串是否包含a表的%%字符。

说 到 最 后

两个方法都进行了两次判断,是为了减少匹配不上的情况。

对于模糊匹配的运用还是很广泛的,其运用的方式还需要根据具体业务需求而做出对应的判断。

所以还需要根据自己的需求、业务以及数据情况,具体问题具体分析,结合各种方法开发代码实现自己想要的功能,做到因地制宜。

本期内容就到这啦~

现在最火的发帖平台

瓜子二手车为啥贵 被曝强制搭售乱收咨询费 瓜子二手车退还王先生8300元

2023-11-21 20:01:59

现在最火的发帖平台

瓜子二手车为啥贵 瓜子二手车全国购破除区域差价 同等车况凯美瑞差价近2万元

2023-11-21 21:01:57

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索