我试图提取定界符之间的列的特定部分。
例如在下面找到foo
测试'esf:foo:bar
因此,在上面我想返回foo,但是所有的regexp函数只返回true | false,
有没有办法在MySQL中做到这一点
最佳答案
在这里,芽,
SELECT
SUBSTR(column,
LOCATE(':',column)+1,
(CHAR_LENGTH(column) - LOCATE(':',REVERSE(column)) - LOCATE(':',column)))
FROM table
是的,不知道为什么要这么做,但这可以解决问题。
通过执行LOCATE,我们可以找到第一个':'。要找到最后一个':',没有反向LOCATE,因此我们必须通过执行LOCATE(':',REVERSE(column))来手动完成。
有了第一个':'的索引,从最后一个':'到字符串末尾的字符数,以及CHAR_LENGTH(请勿使用LENGTH()),我们可以使用一些数学运算来发现两个':'实例之间的字符串的长度。
这样,我们可以执行一个SUBSTR并动态地抽取两个':'之间的字符。
再次,这很麻烦,但对每个人来说都是如此。
关于mysql - 在MySQL中的定界符之间搜索文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/149690/