今天处理复杂业务,发现需要查出A表中的a字段存在B表中的b字段,不想写Java代码处理,尝试使用sql语句处理,发现INSTR可以处理这种场景业务。
举个sql栗子:
SELECT DISTINCT
Q1.id,
Q1. CODE,
Q1.codeRepty
FROM
queryreptycode AS Q1 INNER JOINqueryreptycode AS Q2
WHERE
INSTR(
Q1.`code`,
Q2.codeRepty
)
原理:
函数INSTR会告诉用户,其中的一个字符串(参数)是否在另一个字符串(也是参数)当中。
其具体的语法格式如下:
INSTR(string,substring[,start[,occurrence]])
其中:
string 待查询的字符串
substring 正在搜索的字符串
start 说明开始搜索的字符位置。默认值是1,就是说,搜索将从字符串的第一个字符开始。如果,参数为负 则表示搜索的位置从右边开始计算,而不是默认的从左边开始
occurrence 指定试图搜索的子串的第几次出现,默认值是1,意 味着希望其首次出现
该函数反馈一索引顺序值,在该位置发现了要搜索的子串。下面的例子指出了INSTR函数的使用情况:
INSTR(‘AAABAABA’,’B’)=4
INSTR(‘AAABAABA’,’B’,1,2)=7