希望通过MYSQL在字符串中的括号之间提取数据

时间:2011-11-09 22:05:51

标签: mysql regex

有人可以帮忙。我一直在搜索和遇到/修改此代码我得到1或0作为结果。如果在()和0之间有某些东西,如果没有,则为1。如果有什么东西,我希望找到它们之间的确切内容。所以,如果我在野外有一个看起来像这样的字符串:“ABC(989)你好”目前我得到1作为我的结果我想得到“989”。任何帮助将不胜感激。

选择,OUTCNTCTNOTE regexp'[(] | \ \ []]'作为测试 来自trcalls.callcoding;

3 个答案:

答案 0 :(得分:3)

要完成第一个答案,因为传递给substr的第三个参数是子字符串的长度,我们需要减去开始parantheses的索引,所以:

substr(columnname,instr(columnname,"(") + 1, instr(columnname,")") - instr(columnname,"(") - 1)

应该做的伎俩

答案 1 :(得分:2)

select substr(columnname,instr(columnname,"(") + 1, instr(columnname,")")) as temp from mytable
接近,我测试了这个。请看看这是否有帮助!

答案 2 :(得分:0)

Mysql的正则表达式不支持捕获或替换。它们纯粹是为了匹配。您需要使用常规字符串操作来进行实际提取:

SELECT ...string stuff here...
FROM yourtable
WHERE OUTCNTCTNOTE regexp ....

如果您的字符串非常“常规”且您不必担心任何字段中的多组括号,那么使用LOCATE()SUBSTR()就可以了。