LEFT(str, length) 函数
从左开始截取字符串,length 是截取的长度。
select left("ABCD",1);输出 'A'
select left("ABCD",2);输出 'AB'
right(str,length) 函数
从右边开始截取字符串,length 是截取的长度。
select right("ABCD",1);输出 "D"
select right("ABCD",2);输出 "CD"
CONCAT() 函数
CONCAT 可以将多个字符串拼接在一起。
select CONCAT("AB","c" );输出"ABC"
UPPER(str) 与 LOWER(str)
UPPER(str) 将字符串中所有字符转为大写
LOWER(str) 将字符串中所有字符转为小写
select UPPER ("abc");输出"ABC"
select LOWER("ABC");输出"abc"
SUBSTRING(str, begin, end)
截取字符串,end 不写默认为空。
SUBSTRING(name, 2) 从第二个截取到末尾,注意并不是下标,就是第二个。
select SUBSTRING("abc",2);输出"bc"
select SUBSTRING("abcd",2,3);输出"bcd"
NOT IN()
用来查询不在某个值集的数据
select * from A where id not in (1,2)查询A表中id不为1,2的数据
Not Exists()
和not in一样,not exists用于多表查询即子查询
not exists查询是要比not in 效率高
详细解释:
https://blog.csdn.net/weixin_45589505/article/details/125785457
GROUP_CONCAT()
用于将分组中括号里对应的字符串进行连接.如果分组中括号里的参数xxx有多行,那么就会将这多行的字符串连接,每个字符串之间会有特定的符号进行分隔。
语法:
GROUP_CONCAT([DISTINCT] 要连接的字段 [ORDER BY 排序字段 ASC/DESC] [SEPARATOR ‘分隔符’])
字段说明:
- 使用DISTINCT可以排除重复值
- 如果需要对结果中的值进行排序,可以使用ORDER BY子句
- SEPARATOR '分隔符’是一个字符串值,默认为逗号
select name, GROUP_CONCAT(age) as age from user GROUP BY name ; 对user表按name进行分组并把相同的age进行拼接
like (不区分大小写)
模糊查询:对数据进行模糊查询,通常与 % 和 _ 搭配使用
*百分比(%) 通配符允许匹配任何字符串的零个或多个字符。
*下划线(_) 通配符允许匹配任何单个字符。
select * from user where name like 'A'; 查询name字段中等于A的数据
select * from user where name like '%A%'; 查询name字段中包含A的数据
select * from user where name like 'A%'; 查询name字段中开头为A的数据
select * from user where name like '%A%'; 查询name字段中结尾为A的数据
select * from user where name like '_A%'; 查询name字段中第二个为A的数据
注意:当输入的为%或者 _ 时会查出所有数据
解决:进行转义
select * from user where name like ''%\\_%''
或
select * from user where name like ''%/_%'' ESCAPE '/';
还有一种就是使用 INSTR函数
select * from user where INSTR(id,‘%’)但这种只能查询包含的不能判断是开头的还是结尾的或者其它的。
INSTR函数(不区分大小写)
字符串中查找子字符串或检查字符串中是否存在子字符串
INSTR()函数返回字符串中子字符串第一次出现的位置。如果在str中找不到子字符串,则INSTR()函数返回零(0)
select * from user where INSTR(name,'A')>0;返回user表中name包含A字符串的数据
UNION 与 UONION ALL
这两个函数的作用时把集合合并起来,区别在于UNION会去掉重复的,UNION ALL会原封不动的合并
user表有数据 1,2,3,4 test表有数据 2,4,5,6
select * from user union select * from test; 输出 1,2,3,4,5,6
select * from user union all select * from test; 输出 1,2,2, 3,4,4, 5,6