mysql函数—001通过regexp实现对字母或数字进行过滤
实现MySQL 正则表达式
MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。
如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似。
下表中的正则模式可应用于 REGEXP 操作符中。
表中信息
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`stu_count` int(0) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `student` VALUES ('c1', 33);
INSERT INTO `student` VALUES ('c2', 44);
INSERT INTO `student` VALUES ('c3', 57);
INSERT INTO `student` VALUES ('c4', 57);
INSERT INTO `student` VALUES ('11', NULL);
INSERT INTO `student` VALUES ('BC3', NULL);
INSERT INTO `student` VALUES ('ab', NULL);
INSERT INTO `student` VALUES ('33', NULL);
INSERT INTO `student` VALUES ('67', NULL);
INSERT INTO `student` VALUES (NULL, NULL);
SET FOREIGN_KEY_CHECKS = 1;
所有name列的信息
筛选出来name列 中含有特殊字符的信息
如果我们想判断一个字符串或者数据字段中是否包含有特殊字符。可以使用正则来实现。除了大小字母和数字之外全是特殊字符[^a-zA-Z0-9]
select name from zmh.student where name not regexp '[a-zA-Z0-9]';
-- 筛选出来只包含特殊字符的数据
筛选出来name列 所有的包含字母的数据
select name from zmh.student where name not regexp '^c';
-- 筛选出来所有的以字母c开头的name
select name from zmh.student where name regexp '[a-z]';
--筛选出来所有的包含字母的数据
select name from zmh.student where name not regexp '[a-z]';
--筛选出来所有的不包含字母的数据