【问题标题】:Mysql REGEXP select numbers starting with given digit(s)Mysql REGEXP 选择以给定数字开头的数字
【发布时间】:2015-09-10 18:35:14
【问题描述】:

我的表格有一列以逗号分隔(最终也是一个空格)数字;这些数字可以有 5 到 12 位数字。

9645811, 9646011,9645911, 9646111

41031, 41027, 559645811, 5501006009

我需要选择该列包含以给定数字开头的数字的行。在上面的例子中,只需要选择第一个。到目前为止我尝试过的:

SELECT myfield FROM mytable
WHERE myfield REGEXP ('(^|[,\s]+)(96458[\d]*)([,\s]*|$)');

但是查询没有返回任何结果。我只想选择第一行,其中有一个以 96458 开头的数字。

任何帮助将不胜感激:)

【问题讨论】:

  • 你的正则表达式似乎没问题。
  • WHERE SUBSTRING_INDEX(myfield ,',',1) LIKE '96458%'

标签: mysql regex


【解决方案1】:

需要使用起始字边界[[:<:]]

SELECT myfield FROM mytable WHERE myfield REGEXP ('[[:<:]]96458');

有关详细信息,请参阅MySQL regex syntax

[[:&lt;:]], [[:&gt;:]]

这些标记代表单词边界。它们分别匹配单词的开头和结尾。

看到这个SQL fiddle

【讨论】:

    猜你喜欢
    • 2015-05-10
    • 2011-05-29
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多