我试图提取分隔符之间的列的某个部分.
例如,在下面找到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(列))手动完成.
使用第一个':'的索引,从最后':'到字符串结尾的字符数,以及CHAR_LENGTH(不要对此使用LENGTH()),我们可以使用一点数学来发现两个':'实例之间的字符串长度.
通过这种方式,我们可以执行SUBSTR并动态地拔出两个':'之间的字符.
再说一次,这很糟糕,但对每个人来说都是如此.