1.LEFT函数
LEFT函数用于从给定字符串的左侧提取指定数量的字符
语法结构
LEFT(str,len)
str: 给定的字符串,将从其左侧提取字符
len: 要提取的字符数,如果此参数大于字符串中的字符数,则此函数将返回实际的字符串
注意: 如果任一参数为Null,结果返回Null
示例
-- 结果为空
SELECT LEFT('abcdefg',0);
-- abc
SELECT LEFT('abcdefg',3);
-- abcdefg
SELECT LEFT('abcdefg',10);
-- Null
SELECT LEFT('abcd',NULL);
-- LEFT函数可以截取数字
-- 12
SELECT LEFT(123456,2);
2.RIGHT函数
RIGHT函数用于从给定字符串的右侧提取指定数量的字符
语法结构
RIGHT(str,len)
str: 给定的字符串,将从其右侧提取字符
len: 要提取的字符数,如果此参数大于字符串中的字符数,则此函数将返回实际的字符串
注意: 如果任一参数为Null,结果返回Null
示例
-- 结果为空
SELECT RIGHT('abcdefg',0);
-- efg
SELECT RIGHT('abcdefg',3);
-- abcdefg
SELECT RIGHT('abcdefg',10);
-- Null
SELECT RIGHT('abcd',NULL);
-- RIGHT函数可以截取数字
-- 56
SELECT RIGHT(123456,2);
练习案例
导入数据
DROP TABLE IF EXISTS `employee_info`;
CREATE TABLE `employee_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`phone` varchar(255) DEFAULT NULL,
`salary` int(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4;
INSERT INTO `employee_info` VALUES ('1', 'Odin', '13810809401', '10000');
INSERT INTO `employee_info` VALUES ('2', 'Kacky', '15820126789', '12000');
INSERT INTO `employee_info` VALUES ('3', 'Jerry', '15815810158', '11000');
INSERT INTO `employee_info` VALUES ('4', 'Harry', '15820176889', '13000');
INSERT INTO `employee_info` VALUES ('5', 'Sun', '13578945621', '9000');
employee_info表
问题: 将员工手机号码进行加密处理(例如:138****9401) ,按薪资升序输出数据(name,phone,salary格式进行输出)
SELECT name, CONCAT(LEFT(phone,3),'****',RIGHT(phone,4))AS phone, salary
FROM employee_info
ORDER BY salary ASC;
结果展示: