我试图提取定界符之间的列的特定部分。

例如在下面找到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/

10-10 10:23