电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

SQL多表聯(lián)合查詢時如何采用字段模糊匹配

瀏覽:32日期:2023-03-06 14:25:29
目錄
  • 先說一下背景和要求
  • 方法一
  • 方法二
  • 方法三

先說一下背景和要求

背景:由于業(yè)務(wù)或是其他不描述的原因的問題導(dǎo)致原有存儲的數(shù)據(jù)發(fā)生變動,與現(xiàn)有數(shù)據(jù)有差別,但還是能勉強(qiáng)看明白數(shù)據(jù)內(nèi)容。

要求:實(shí)現(xiàn)A表的名稱字段和B表的名稱字段要模糊匹配。

上圖:

假如A表長這樣:

B表長這樣:

然后我要想變成這樣:

簡單說就是在我關(guān)聯(lián)查詢兩表時,條件字段的取值看起來不一樣,但是意思是一樣的,應(yīng)該要把這種數(shù)據(jù)關(guān)聯(lián)起來。但是SQL里面“=”兩邊又必須嚴(yán)格相同,所以現(xiàn)在怎么辦呢?

方法一

可以采用類似于LIKE模糊查詢的辦法。

MySQL:

SELECT a.id,a.`name`,b.newid,b.newname FROM z_good a,z_good_new bWHERE INSTR(a.`name`,b.newname)>0 OR INSTR(b.newname,a.`name`)>0

或者

SELECT a.id,a.`name`,b.newid,b.newname FROM z_good a,z_good_new bWHERE a.`name` LIKE CONCAT("%",b.newname,"%") OR b.newname LIKE CONCAT("%",a.`name`,"%")

Oracle:

SELECT a.id,a.`name`,b.newid,b.newname FROM z_good a,z_good_new bWHERE a.`name` LIKE "%"||b.newname||"%"

SQL Server:

SELECT a.id,a.`name`,b.newid,b.newname FROM z_good a,z_good_new bWHERE a.`name` LIKE "%"+b.newname+"%" OR b.newname LIKE "%"+a.`name`+"%"

順便說一下這里用到的字符串拼接功能在三類數(shù)據(jù)庫中的寫法:

SQL Server:

SELECT "123"+"456"

Oracle:

SELECT "123"||"456" FROM dual或SELECT CONCAT("123","456") FROM dual

MySQL:

SELECT CONCAT("123","456")

Oracle和MySQL中雖然都有CONCAT,但是Oracle中只能拼接2個字符串,所以建議用||的方式,MySQL中的CONCAT則可以拼接多個字符串。

此外,MySQL中的INSTR(STR,SUBSTR)函數(shù),在一個字符串(STR)中搜索指定的字符(SUBSTR),返回發(fā)現(xiàn)指定的字符的位置(INDEX)。

  • STR—被搜索的字符串;
  • SUBSTR—希望搜索的字符串;

結(jié)論:在字符串STR里面,字符串SUBSTR出現(xiàn)的第一個位置(INDEX),INDEX是從1開始計(jì)算,如果沒有找到就直接返回0,沒有返回負(fù)數(shù)的情況。

到這兒,有同學(xué)就會發(fā)現(xiàn),你這應(yīng)用場景也太單一了吧,要是這種:A表被關(guān)聯(lián)字段值為“城鄉(xiāng)規(guī)劃”,B表被關(guān)聯(lián)字段值為“城市規(guī)劃”;或者A表被關(guān)聯(lián)字段值為“漂亮”,B表被關(guān)聯(lián)字段值為“美麗”。這樣的兩個字段值也是一個意思,但是用上面的方法就行不通了。

沒辦法了嘛?

有的。

方法二

你還可以使用NLP的算法來做上面最后提到的那種情況,關(guān)于這點(diǎn),在我之前發(fā)表的文章《Word2Vec可視化展示》中已有詳細(xì)說明,感興趣的同學(xué)可以研究研究。

另外就是,不管哪種辦法,總有漏網(wǎng)之魚,也就是總有你匹配不到的情況,或是匹配錯誤的情況。所以還需要根據(jù)自己的需求、業(yè)務(wù)以及數(shù)據(jù)情況,具體問題具體分析,結(jié)合各種方法開發(fā)代碼實(shí)現(xiàn)自己想要的功能,做到因地制宜。

那有同學(xué)又問了,就沒有那種一招打天下的辦法了嗎?

有的。

方法三

你可以用你的最強(qiáng)大腦去手動處理~~~~~~~~~~

咳咳,我的意思是:就算要手動處理,我們也要減少手動處理的工作量嘛。要不“會急死人的”,真的“會急死人的”!

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持。

標(biāo)簽: MsSQL
相關(guān)文章:
主站蜘蛛池模板: 医疗仪器模块 健康一体机 多参数监护仪 智慧医疗仪器方案定制 血氧监护 心电监护 -朗锐慧康 | 大米加工设备|大米加工机械|碾米成套设备|大米加工成套设备-河南成立粮油机械有限公司 | 四川成人高考_四川成考报名网 | 圆形振动筛_圆筛_旋振筛_三次元振动筛-河南新乡德诚生产厂家 | R507制冷剂,R22/R152a制冷剂厂家-浙江瀚凯制冷科技有限公司 | 上海道勤塑化有限公司| 南京展台搭建-南京展会设计-南京展览设计公司-南京展厅展示设计-南京汇雅展览工程有限公司 | 钢托盘,钢制托盘,立库钢托盘,金属托盘制造商_南京飞天金属制品实业有限公司 | 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 游泳池设备安装工程_恒温泳池设备_儿童游泳池设备厂家_游泳池水处理设备-东莞市君达泳池设备有限公司 | 全自动面膜机_面膜折叠机价格_面膜灌装机定制_高速折棉机厂家-深圳市益豪科技有限公司 | 北京模型公司-工业模型-地产模型-施工模型-北京渝峰时代沙盘模型制作公司 | 扬子叉车厂家_升降平台_电动搬运车|堆高车-扬子仓储叉车官网 | 高精度电阻回路测试仪-回路直流电阻测试仪-武汉特高压电力科技有限公司 | 桥架-槽式电缆桥架-镀锌桥架-托盘式桥架 - 上海亮族电缆桥架制造有限公司 | 成都竞价托管_抖音代运营_网站建设_成都SEM外包-成都智网创联网络科技有限公司 | 解放卡车|出口|济南重汽|报价大全|山东三维商贸有限公司 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 电车线(用于供电给电车的输电线路)-百科| 心肺复苏模拟人|医学模型|急救护理模型|医学教学模型上海康人医学仪器设备有限公司 | 执业药师报名条件,考试时间,考试真题,报名入口—首页 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 河南中整光饰机械有限公司-抛光机,去毛刺抛光机,精密镜面抛光机,全自动抛光机械设备 | 广州迈驰新GMP兽药包装机首页_药品包装机_中药散剂包装机 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 机械立体车库租赁_立体停车设备出租_智能停车场厂家_春华起重 | 飞利浦LED体育场灯具-吸顶式油站灯-飞利浦LED罩棚灯-佛山嘉耀照明有限公司 | 专业音响设备_舞台音响设备_会议音响工程-首选深圳一禾科技 | 超细粉碎机|超微气流磨|气流分级机|粉体改性设备|超微粉碎设备-山东埃尔派粉碎机厂家 | 冷油器-冷油器换管改造-连云港灵动列管式冷油器生产厂家 | 钢衬玻璃厂家,钢衬玻璃管道 -山东东兴扬防腐设备有限公司 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 偏心半球阀-电动偏心半球阀-调流调压阀-旋球阀-上欧阀门有限公司 | 定制/定做冲锋衣厂家/公司-订做/订制冲锋衣价格/费用-北京圣达信 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 铝合金电阻-无源谐波滤波器-上海稳达电讯设备厂 | 山东螺杆空压机,烟台空压机,烟台开山空压机-烟台开山机电设备有限公司 | 东莞韩创-专业绝缘骨架|马达塑胶零件|塑胶电机配件|塑封电机骨架厂家 |