MySQL regexp 命令

REGEXP命令是一种用于进行正则表达式匹配的运算符,允许在查询中使用正则表达式来匹配字符串模式‌‌1。

基本语法

基本的语法结构如下:

SELECT * FROM table_name WHERE column_name REGEXP 'pattern';

这里,pattern是你要匹配的正则表达式模式‌1。

常用正则表达式符号及其含义

  • ^:匹配字符串的开始。
  • $:匹配字符串的结束。
  • .:匹配任意单个字符。
  • *:匹配前一个字符零次或多次。
  • +:匹配前一个字符一次或多次。
  • ?:匹配前一个字符零次或一次。
  • |:表示“或”操作。
  • []:匹配方括号内的任意单个字符,例如 [abc] 匹配 a、b 或 c‌1。

示例查询

  1. 匹配包含特定字符的行‌:
    SELECT * FROM users WHERE name REGEXP '^[A-M]'; -- 匹配以 A 到 M 开头的名字 
  2. 匹配包含数字的订单号‌:
    SELECT * FROM orders WHERE order_number REGEXP '[0-9]'; -- 匹配包含数字的订单号 
  3. 匹配多个选项‌:
    SELECT * FROM products WHERE category REGEXP 'electronics|furniture'; -- 匹配电子产品或家具 
  4. 区分大小写‌:如果需要区分大小写,可以使用 BINARY 关键字:
    SELECT * FROM users WHERE BINARY name REGEXP '^[A-M]'; -- 匹配以 A 到 M 开头的名字,区分大小写 
  5. 匹配特定域名下的电子邮件‌:
    SELECT * FROM employees WHERE email REGEXP '@example.com$'; -- 匹配所有在 example.com 域名下的电子邮件 

 ‌匹配只包含数字的行‌:

SELECT buildnum FROM ya_evaluating_price WHERE buildnum REGEXP '^[0-9]+$';

  ‌匹配包含汉字的数据

SELECT buildnum FROM ya_evaluating_price WHERE buildnum REGEXP '[\\x{4e00}-\\x{9fa5}]'


-- 在MySQL中,UTF8MB4字符集支持所有Unicode字符,包括中文字符。我们可以将字段的字符集设置为UTF8MB4,然后判断字段内容的长度是否大于原内容的长度,以此来判断字段内容是否包含中文。

SELECT buildnum FROM ya_evaluating_price WHERE CHAR_LENGTH(buildnum) < LENGTH(buildnum)

性能影响和最佳实践

使用REGEXP可能会影响性能,特别是在大型数据集上。因此,需要确保正则表达式的正确性,以避免意外匹配‌

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值