在MySQL中的分隔符之间搜索文本

11 mysql

我试图提取分隔符之间的列的某个部分.

例如,在下面找到foo

测试'esf:foo:bar

所以在上面我想要返回foo,但是所有的regexp函数只返回true | false,有没有办法在MySQL中执行此操作

Pet*_* II 21

芽,芽:

SELECT 
  SUBSTR(column, 
    LOCATE(':',column)+1, 
      (CHAR_LENGTH(column) - LOCATE(':',REVERSE(column)) - LOCATE(':',column))) 
FROM table
Run Code Online (Sandbox Code Playgroud)

是的,不知道为什么你这样做,但这将成功.

通过执行LOCATE,我们可以找到第一个':'.要找到最后一个':',没有反向LOCATE,所以我们必须通过执行LOCATE(':',REVERSE(列))手动完成.

使用第一个':'的索引,从最后':'到字符串结尾的字符数,以及CHAR_LENGTH(不要对此使用LENGTH()),我们可以使用一点数学来发现两个':'实例之间的字符串长度.

通过这种方式,我们可以执行SUBSTR并动态地拔出两个':'之间的字符.

再说一次,这很糟糕,但对每个人来说都是如此.


小智 6

如果两个分隔符仅在您的列中出现两次,这应该有效。我正在做类似的事情...

substring_index(substring_index(column,':',-2),':',1)
Run Code Online (Sandbox Code Playgroud)