sql模糊查询,mysql截取字符串,Oracle中字符串截取 sql中字符串截取
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
sql模糊查询
一般模糊查询语句如下
SELECT 字段 FROM 表 WHERE 某字段 Like 条件
其中关于条件SQL提供了四种匹配模式
标题1% 表示任意0个或多个字符。可匹配任意类型和长度的字符有些情况下若是中文请使用两个百分号(%%表示。
比如 SELECT * FROM [user] WHERE u_name LIKE ‘%三%’
将会把u_name为“张三”“张猫三”、“三脚猫”“唐三藏”等等有“三”的记录全找出来。
另外如果需要找出u_name中既有“三”又有“猫”的记录请使用and条件
SELECT * FROM [user] WHERE u_name LIKE ‘%三%’ AND u_name LIKE ‘%猫%’
若使用 SELECT * FROM [user] WHERE u_name LIKE ‘%三%猫%’
虽然能搜索出“三脚猫”但不能搜索出符合条件的“张猫三”。
2_ 表示任意单个字符。匹配单个任意字符它常用来限制表达式的字符长度语句
比如 SELECT * FROM [user] WHERE u_name LIKE ‘三’
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;
再比如 SELECT * FROM [user] WHERE u_name LIKE ‘三__’;
只找出“三脚猫”这样name为三个字且第一个字是“三”的;
3[ ] 表示括号内所列字符中的一个(类似正则表达式。指定一个字符、字符串或范围要求所匹配对象为它们中的任一个。
比如 SELECT * FROM [user] WHERE u_name LIKE ‘[张李王]三’
将找出“张三”、“李三”、“王三”(而不是“张李王三”;
如 [ ] 内有一系列字符(01234、abcde之类的则可略写为“0-4”、“a-e”
SELECT * FROM [user] WHERE u_name LIKE ‘老[1-9]’
将找出“老1”、“老2”、……、“老9”;
4[^ ] 表示不在括号所列之内的单个字符。其取值和 [] 相同但它要求所匹配对象为指定字符以外的任一个字符。
比如 SELECT * FROM [user] WHERE u_name LIKE ‘[^张李王]三’
将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;
SELECT * FROM [user] WHERE u_name LIKE ‘老[^1-4]’;
将排除“老1”到“老4”寻找“老5”、“老6”、……
更多详情
sql截取字符串
MySQL 字符串截取函数left(), right(), substring()
1. 字符串截取left(str, length)
select left('这是要截取的内容', 3);
## "这是要"
2. 字符串截取right(str, length)
select right('这是要截取的内容', 3);
## "的内容"
3. 字符串截取substring(str, pos); substring(str, pos, len)
3.1 从字符串的第 4 个字符位置开始取直到结束。
select substring('这是要截取的内容', 4);
## "截取的内容"
3.2 从字符串的第 4 个字符位置开始取只取 2 个字符。
select substring('这是要截取的内容', 4, 2);
## "截取"
3.3 从字符串的第 4 个字符位置(倒数开始取直到结束。
select substring('这是要截取的内容', -4);
## "取得内容"
3.4 从字符串的第 4 个字符位置(倒数开始取只取 2 个字符。
select substring('这是要截取的内容', -4, 2);
## "取的"
Oracle中字符串截取
语法SUBSTR(stringstart [length])
string表示源字符串即要截取的字符串。
start开始位置从1开始查找。如果start是负数则从string字符串末尾开始算起。
length可选项表示截取字符串长度。
SELECT SUBSTR('Hello SQL!', 1) FROM dual --截取所有字符串返回'Hello SQL!'
SELECT SUBSTR('Hello SQL!', 2) FROM dual --从第2个字符开始截取到末尾。返回'ello SQL!'
SELECT SUBSTR('Hello SQL!', -4) FROM dual --从倒数第4个字符开始截取到末尾。返回'SQL!'
SELECT SUBSTR('Hello SQL!', 3, 6) FROM dual --从第3个字符开始截取6个字符。返回'llo SQ'
SELECT SUBSTR('Hello SQL!', -4, 3) FROM dual --从倒数第4个字符开始截取3个字符。返回'SQL'
instr 函数返回子字符串在源字符串中的位置
语法INSTR(stringchild_string[start][show_time])
string表示源字符串。
child_string子字符串即要查找的字符串。
start可选项开始位置默认从1开始。如果为负数则从右向左检索。
show_time可选项表示子字符串第几次出现在源字符串当中默认第1次负数则报错。
--表示从源字符串'city_company_staff'中第1个字符开始查找子字符串'_'第1次出现的位置
SELECT INSTR('city_company_staff', '_') FROM dual --返回5
--表示从源字符串'city_company_staff'中第5个字符开始查找子字符串'_'第1次出现的位置
SELECT INSTR('city_company_staff', '_', 5) FROM dual --返回5
--表示从源字符串'city_company_staff'中第5个字符开始查找子字符串'_'第1次出现的位置
SELECT INSTR('city_company_staff', '_', 5, 1) FROM dual --返回5
--表示从源字符串'city_company_staff'中第3个字符开始查找子字符串'_'第2次出现的位置
SELECT INSTR('city_company_staff', '_', 3, 2) FROM dual --返回13
--start参数为-1从右向左检索查找'_'字符串在源字符串中第1次出现的位置
SELECT INSTR('city_company_staff', '_', -1, 1) FROM dual --返回13
--start参数为-6从右向左检索查找'_'字符串在源字符串中第2次出现的位置
SELECT INSTR('city_company_staff', '_', -6, 2) FROM dual --返回5