MYSQL 查询一张表中某字段值是否包含另一表中某字段值

业务场景:由于新老系统迁移,需要将老数据中关联了对应过程的文件,通过对应过程这个字段与新系统中关联了对应过程的文件,进行比对,难点在于,新系统中的部分对应过程名称已更改,如老系统中叫“管理新技术”的,新系统中改为了“5A管理新技术”,所以需要将无法比对上得数据整理出来,交由用户重新进行关联

 

select bh.* from b_commonfiles bh, sheet1 sh where instr(sh.BUSINESS_DOMAIN,bh.file_process)>0 and sh.BUSINESS_DOMAIN is not null and sh.document.id= bh.filecode and bh.file_process is not null and bh.filestate='有效' and bh.file_process <>''

核心代码为粉色的 instr函数,bh.file_process为被包含的字段值,而sh.BUSINESS_DOMAIN包含它的字段值,没匹配上的数据为0,所以匹配上的数据应该是>0

### 如何在SQL查询中查找字段包含特定(如 '001')的记录 要在SQL查询中查找某字段包含特定(例如 '001')的记录,可以使用 `LIKE` 运算符[^1]。`LIKE` 运算符允许通过通配符来匹配字符串模式。以下是具体实现方法: #### 使用 `LIKE` 运算符进行模糊查询 `LIKE` 运算符支持以下两个通配符: - `%`:示零个或多个字符。 - `_`:示单个字符。 如果需要查找字段包含 '001' 的记录,可以使用以下SQL语句: ```sql SELECT * FROM 名 WHERE 字段名 LIKE '%001%'; ``` 此语句的作用是从指定中筛选出字段包含 '001' 的所有记录。例如,假设有一个名为 `students` 的,其中包含一个字段 `student_id`,要查找 `student_id` 中包含 '001' 的所有学生信息,可以执行以下查询: ```sql SELECT * FROM students WHERE student_id LIKE '%001%'; ``` #### 使用正则达式(适用于支持正则的数据库) 对于支持正则达式的数据库(如 MySQL 或 PostgreSQL),可以使用 `REGEXP` 或 `~` 运算符来实现更复杂的匹配逻辑。例如,在 MySQL 中,可以执行以下查询: ```sql SELECT * FROM 名 WHERE 字段名 REGEXP '001'; ``` 此查询将返回字段包含 '001' 的所有记录[^2]。 #### 示例代码 以下是一个完整的示例,展示如何从 `employees` 中查找 `employee_code` 字段包含 '001' 的所有员工信息: ```sql SELECT employee_code, employee_name FROM employees WHERE employee_code LIKE '%001%'; ``` #### 注意事项 - 如果字段区分大小写,则查询结果可能受数据库默认排序规则的影响。可以通过设置排序规则(如 `COLLATE`)来控制大小写敏感性[^3]。 - 使用 `LIKE` 运算符时,索引可能不会被高效利用,尤其是在以通配符 `%` 开头的情况下。这种情况下,查询性能可能会受到影响。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值