文章目录
- IN
- INSTR
- SUBSTR
- LOCATE
- LIKE
 
 
前言:
今天在做一个需求的时候,需要判断字符串中是否包含一个子串,然后我发现了我平常没注意到的一个点,通过这篇博文来记录一下。
IN
IN 函数用于判断一个元素是否存在于所给的元素组中,如果存在则返回 true,不存在则返回 false。
例如:
SELECT 'a' IN('a','b','c');
-- true

所给的元素组需要用小括号引用。
当我在使用 IN 函数的时候犯了一个错误,如下所示:
SELECT 'a' IN('aaa');
-- false

我下意识的认为 IN 函数是判断 a 是否存在于字符串 aaa 中,故误认为返回结果是 true,之前用好像也没毛病,但往往就容易在这种小细节上犯错。
一定要注意,IN 函数是判断某个元素是否【完全等于】所给元素组中的某项内容,而不是包含!!!
INSTR
INSTR(str, substr):返回子串 substr 在字符串 str 中第一次出现的位置,如果未找到,则返回 0。
例如:
SELECT INSTR('Hello,World', 'World'); 
-- 7
SELECT INSTR('Hello,World Hello,World2', 'World'); 
-- 7
应用场景:常常用于判断字符串中是否包含给定子串。
SUBSTR
SUBSTR(str, pos, len):返回字符串 str 中从位置 pos 开始的长度为 len 的子串。
例如:
SELECT SUBSTR('Hello,World', 7, 5); 
-- World
应用场景:获取字符串中的子串。
LOCATE
LOCATE(substr, str):返回子串 substr 在字符串 str 中第一次出现的位置,如果未找到,则返回 0。LOCATE 是 INSTR 的同义词,区别是 LOCATE 子串在前,而 INSTR 是字符串在前。
例如:
SELECT LOCATE('World','Hello,World'); 
-- 7
SELECT LOCATE('World','Hello,World Hello,World2'); 
-- 7
应用场景:常常用于判断字符串中是否包含给定子串。
LIKE
LIKE:用于模糊匹配字符串,通常与通配符 % 和 _ 一起使用,但不是严格的子串查找函数。
例如:
SELECT 'Hello,World' LIKE '%World%'; 
-- true
SELECT 'Hello,World Hello,World2' LIKE '%World%'; 
-- true
应用场景:用于匹配字符串中包含特定子串的情况。





![[SQL开发笔记]IN操作符: 在WHERE子句中规定多个值](https://img-blog.csdnimg.cn/61963ae9ac534502af20a6d98f5c72cf.png)











![2023年中国临床决策支持系统发展趋势分析:综合性决策系统将成市场主流[图]](https://img-blog.csdnimg.cn/img_convert/bcd9efd3aa6f9596baa5cb6e5ec7102a.png)

