mysql 正则表达式用法(一)

记录下关于mysql中regexp 正则匹配字符串的相关用法

一、匹配字符类

markup 复制代码
[:alnum:]  任意字母和数字(同[a-zA-Z0-9])
[:alpha:]  任意字符(同[a-zA-Z])
[:blank:]  空格和制表(同[\t])
[:cntrl:]  ASCII控制字符(ASCII 0到31和127)
[:digit:]  任意数字(同[0-9])
[:graph:]  与[:print:]相同,但不包括空格
[:lower:]  任意小写字母(同[a-z])
[:print:]  任意可打印字符
[:punct:]  既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:]  包括空格在内的任意空白字符(同[\f\n\r\t\v])
[:upper:]  任意大写字母(同[A-Z])
[:xdigit:] 任意十六进制数字(同[a-fA-F0-9])

二、特定需求

  1. 仅匹配字符串内存在空格的情况
    方法1: select case when '123 456' regexp '^[^ ]+.*[[:blank:]].*[^ ]+$' then 1 else 0 end check_status
  2. 仅匹配字符串两端存在空格的情况
    方法1: 使用trim()函数来判断: select case when trim(check_col) != check_colthen 1 else 0 end check_status
    方法2: 正则判断 select case when '123' regexp '^ | $' then 1 else 0 end check_status
  3. 匹配非内部空格,包含两端空格以及\f\n\r\t\v等字符的情况
    方法: select case when check_col regexp '[[:space:]]' and check_colnot regexp '^[^ ]+.*[[:blank:]].*[^ ]+$' then 1 else 0 end check_status
相关推荐
叼烟扛炮2 小时前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
.痞老板.4 小时前
mysql初阶--数据库基础
数据库·mysql
城北徐宫5 小时前
MySQL约束条件一览
数据库·mysql
码农小河665 小时前
基于SSM+JSP+MySQL的在线医疗服务系统的设计与实现
java·开发语言·mysql
ClouGence7 小时前
数据库变更审批困局,被这个开源工具解决了
数据库·开源
TDengine (老段)8 小时前
TDengine IDMP 十大实用功能(9)
大数据·数据库·人工智能·物联网·时序数据库·tdengine·idmp
starrocks_stella9 小时前
EMR Serverless StarRocks Object Table:用 SQL 连接 OSS 文件与多模态 AI
数据库
这个DBA有点耶9 小时前
以为自增ID只是有空洞?聊聊双主架构下无声的“数据覆盖”
数据库·mysql·dba
陈布衣9 小时前
MySQL(1)_MySQL 5.7.21 Linux 安装笔记
linux·笔记·mysql
钱栈up10 小时前
内网全断,怎么核实高炉和烧结系统的数据库对接信息
数据库