【问题标题】:Extract a sequence of digits from database从数据库中提取数字序列
【发布时间】:2018-08-03 04:57:29
【问题描述】:

有没有办法从数据库中选择一个数字序列(我在想像正则表达式之类的东西)?

例如:我有以下一组整数:

487119241 487130101 486614011 481124234 484031341 487110 48712

我只想提取符合 4871 模式的那些; 我知道在 Python 中我可以做 re.match('4871[0-9]+', mySet) 但我不知道 mySQL 中有任何类似的机制。

我可能在想SELECT integers FROM db WHERE myNumber > SOME_VALUE; 的东西,但这不起作用,因为模式可能从 5 位到 7 位不等。

【问题讨论】:

  • 您可以在 MySQL 的 SQL 查询中使用正则表达式。您可以在dev.mysql.com/doc/refman/8.0/en/regexp.html 中了解更多信息
  • 这些整数是每行存储一个,而不是全部存储在一个字符串中吗?如果是这样,@jaunbits 需要支持他的建议。

标签: mysql database optimization


【解决方案1】:

你可以试试:

SELECT * FROM `table` WHERE field REGEXP '4871[0-9]+'

【讨论】:

  • 问题中没有明确说明,但是,鉴于有关使用 mynumber > somevalue 和示例数据的建议,这可能需要在正则表达式的开头用 ^ 锚定,否则您将匹配号码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-27
  • 1970-01-01
相关资源
最近更新 更多