Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql查询和regexp问题_Mysql_Sql_Regex - Fatal编程技术网

mysql查询和regexp问题

mysql查询和regexp问题,mysql,sql,regex,Mysql,Sql,Regex,几个月前,我问了下面的问题 然而,我遇到了一个问题 使用此查询时: 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”,并且它们是DB中另一个名为“example_224-06-55-00”的元素,则它们都将作为此

几个月前,我问了下面的问题

然而,我遇到了一个问题

使用此查询时:

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”,并且它们是DB中另一个名为“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");

如果要为以数字结尾的字符串编写模式,如“xxx xx xx”,而不是
“[0-9]+”
,则可以使用
“\d\d-\d\d-\d”

根据需要更新正则表达式

SELECT MAC, NAME FROM DB.HOST 
 WHERE NAME REGEXP 
  (SELECT CONCAT(LEFT(NAME, LENGTH(NAME)-1), "_[0-9]+-[0-9]+-[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'
);
请参阅,单词边界模式记录在页面底部附近


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

每次大小都可能不同。它可能不总是只有7位,下次可能是9位,或者5位。然后请澄清为什么字符串“example_224-06-55-00”不能满足您的要求。是关于尾随的零吗?因为如果“某个mac”解析为名称“example_224-06-55”,并且它们在DB“example_224-06-55-00”中存在另一个名称,它们都会出现。我只希望“示例_224-06-55”出现。谢谢,只是没有立即了解确切的问题是什么:)它可以有不同的长度,这只是一个示例。非常感谢,先生,这非常有效!但是,为了让它工作,我必须删除“+”。