mysql中使用正则表达式进行mysql查询

标签 mysql sql regex

SELECT ProductNumber, Name, ListPrice
FROM SalesLT.Product 
WHERE ProductNumber LIKE 'BK-[^R]%-[0-9][0-9]';'BK-M47B-38'

我想要的产品是:以“BK-”开头,后跟任何其他字符 比“R”,并以“-”结尾,后跟任意两个数字。 上面是 ms-sql 查询,我想要此查询的 mysql 版本 产品编号如下:

'BK-M47B-40'
'BK-M82B-44'
'FR-R38B-60'
'ST-9828'

最佳答案

等效的正则表达式非常相似:

SELECT ProductNumber, Name, ListPrice
FROM SalesLT.Product 
WHERE ProductNumber REGEXP '^BK[-][^R].*[-][0-9]{2}$'

主要区别:

  • ^$ 标记字符串的开头和结尾(否则,正则表达式会匹配字符串中的任何位置。
  • % --> .*
  • {2} 是可选的,但在重复模式的正则表达式中更加通俗。注意:您也可以使用 [:digit],但输入时间较长。
  • 我忘记了连字符是否是特殊字符,所以我只是将它放在方括号中。

关于mysql中使用正则表达式进行mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33582974/

相关文章:

c - 如何为 Unix 编写一个可以处理正则表达式的 C 程序?

php - 无限滚动 MySQL PHP jQuery

php - 为防止 XSS 和 SQL 注入(inject)而限制的字符列表?

java - 带有 PreparedStatement 的 JDBC 批处理在 MySQL 中不起作用

mysql - 一个子类别可以属于多个类别

正则表达式:删除包含 "help"等的行

mysql 尝试仅选择最新时间戳

sql - 使用 COUNT/Group By 时需要选择所有列

sql - 将数据库名称与表列表相关联

c# - 具有逻辑 AND NOT 功能的正则表达式