MySQL低版本中:字符串中的数字、英文字符、汉字提取
2023-12-13 14:52:39
我们如何提醒一个字段中的汉字和数字呢
高版本指mysql8.0以上
使用sql语句
SELECT REGEXP_REPLACE(column_name, '[^\\p{Han}]', '') AS chinese_characters
FROM table_name;
其中 column_name指名称列,table_name是表名
2.低版本使用
需要新建函数
DELIMITER $$
DROP FUNCTION IF EXISTS `num_char_extract`$$
CREATE DEFINER=`root`@`%` FUNCTION `num_char_extract`(Varstring VARCHAR(100)CHARSET utf8, flag INT) RETURNS varchar(50) CHARSET utf8
BEGIN
DECLARE len INT DEFAULT 0;
DECLARE Tmp VARCHAR(100) DEFAULT '';
SET len=CHAR_LENGTH(Varstring);
IF flag = 0
THEN
WHILE len > 0 DO
IF MID(Varstring,len,1)REGEXP'[0-9]' THEN
SET Tmp=CONCAT(Tmp,MID(Varstring,len,1));
END IF;
SET len = len - 1;
END WHILE;
ELSEIF flag=1
THEN
WHILE len > 0 DO
IF (MID(Varstring,len,1)REGEXP '[a-zA-Z]')
THEN
SET Tmp=CONCAT(Tmp,MID(Varstring,len,1));
END IF;
SET len = len - 1;
END WHILE;
ELSEIF flag=2
THEN
WHILE len > 0 DO
IF ( (MID(Varstring,len,1)REGEXP'[0-9]')
OR (MID(Varstring,len,1)REGEXP '[a-zA-Z]') )
THEN
SET Tmp=CONCAT(Tmp,MID(Varstring,len,1));
END IF;
SET len = len - 1;
END WHILE;
ELSEIF flag=3
THEN
WHILE len > 0 DO
IF not (MID(Varstring,len,1)REGEXP '^[u4e00-u9fa5]')
and not (MID(Varstring,len,1)REGEXP '^[/]')
and not (MID(Varstring,len,1)REGEXP '^[ ]')
THEN
SET Tmp=CONCAT(Tmp,MID(Varstring,len,1));
END IF;
SET len = len - 1;
END WHILE;
ELSE
SET Tmp = 'Error: The second paramter should be in (0,1,2,3)';
RETURN Tmp;
END IF;
RETURN REVERSE(Tmp);
END$$
DELIMITER ;
优化了除去斜杠和空格,如果需要展示的话,在第三个判断中去除’1'和【】判断就可以实现
测试数据建立
测试使用
传值为1时候过滤字符
SELECT markinfo, num_char_extract(markinfo,1) as chinesechar from dev_move
值为2时候过滤数字加字符
SELECT markinfo, num_char_extract(markinfo,2) as chinesechar from dev_move
值为3过滤汉字
SELECT markinfo, num_char_extract(markinfo,3) as chinesechar from dev_move
/ ??
文章来源:https://blog.csdn.net/weixin_45003206/article/details/134967813
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!