MySQL - 从字符串中提取数字

时间:2009-04-06 15:02:30

标签: mysql string

在MySQL数据库中,我有一个包含itemID,itemName和其他一些字段的表。

示例记录(分别为itemID和itemName):

  

vaX652bp_X987_foobar,FooBarItem
  X34_bar,BarItem
  tooX56,TOOX_What

我想写一个查询,它给我一个输出:

652,FooBarItem
34,BarItem
56,TOOX_What

换句话说,我想从itemID列中提取出数字。但条件是提取的数字应该是itemID列中第一个出现字符“X”后出现的数字。

我目前正在尝试使用locate()和substring()但是还没有(还)实现我想要的......

<击> 修改 与问题无关 - 任何人都能看到这个问题的所有答案(目前是两个)吗?我只看到“soulmerge”的第一个答案。有什么想法吗?百万美元的问题 - 我刚发现一个错误吗?!

3 个答案:

答案 0 :(得分:1)

在mysql中这是一个可怕的事情,因为它不支持提取正则表达式匹配。我宁愿建议将数据拉入您选择的语言并在那里进行处理。如果您真的必须在mysql中执行此操作,则使用LOCATESUBSTRING与多个CASE的不可读组合是我唯一能想到的。

答案 1 :(得分:1)

为什么不尝试创建第三列,您可以在插入记录时(在PHP中分隔数字)存储,仅数字。所以这样你就可以使用更多的空间来节省大量的处理。

表:

vaX652bp_X987_foobar,652,FooBarItem

X34_bar,34,BarItem

tooX56,56,TOOX_What

答案 2 :(得分:1)

这不可读:

SELECT 0+SUBSTRING(itemID, LOCATE("X", itemID)+1), itemName FROM tableName