mysql查询和正则表达式问题

标签 mysql sql regex

几个月前,我问了以下问题。

My question.

但是,我遇到了一个问题。

当我使用此查询时:

SELECT MAC, NAME FROM DB.HOST WHERE NAME REGEXP (SELECT CONCAT(LEFT(NAME, LENGTH(NAME)-1), "[0-9]+") FROM DB.HOST WHERE MAC="some mac");

如果 MAC 地址解析为“example_224-06-55”,并且它们是数据库中名为“example_224-06-55-00”的另一个元素,则它们都将作为此查询的结果显示。我只希望“example_224-06-55”作为该查询的结果显示。

名称的大小会有所不同,示例仅是示例。

我真的很难弄清楚这个问题,非常感谢任何帮助!

工作查询:

SELECT MAC, NAME FROM DB.HOST WHERE NAME REGEXP (SELECT CONCAT(LEFT(NAME, LENGTH(NAME)-1), "[0-9][[:>:]]") FROM DB.HOST WHERE MAC="some mac");

最佳答案

MySQL 支持特殊的字边界模式[[:>:]]来解决这个问题。

SELECT MAC, NAME FROM DB.HOST 
WHERE NAME REGEXP (
 SELECT CONCAT(LEFT(NAME, LENGTH(NAME)-1), '[0-9]+[[:>:]]') 
 FROM DB.HOST 
 WHERE MAC='some mac'
);

参见http://dev.mysql.com/doc/refman/5.1/en/regexp.html ,单词边界模式记录在页面底部附近。

ps:在 SQL 中对字符串文字使用单引号。双引号用于分隔标识符。

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

相关文章:

mysql - 将两列合并为同一表中的单列

java - 正则表达式以任何随机顺序完全匹配单词的字符,没有重复的字符

mysql,转储,数据库恢复

c# - Visual Studio 在连接到 MySQL 时显示错误

php - 需要减数帮助

mysql - 如何优化这个 MySQL 查询?数百万行

sql - 如何在 Oracle SQL 中处理单引号

SQL Sum 除以相邻月份的权重

c# - html 标签内的正则表达式匹配

python - Python 中的特殊字符模式匹配