尝试在' ||'之前提取前n个字符。来自mysql的符号

时间:2017-01-30 05:33:38

标签: mysql regex sql-like

我试图提取第一个' n'数据库中的字符在第一个' ||'之前符号任何人都可以做任何想法。这是表

表名 - >播放列表

fact->column name
PLKIDHYYFFEF||hello||ee
KDKOIJOFRFOFRFRF||how||tt

我一直在使用提取子字符串

 "SELECT * FROM playlist WHERE playlist.fact LIKE %...%";

无法理解应保留哪种模式

2 个答案:

答案 0 :(得分:0)

如果你想要'||'之前的任何内容,请使用SUBSTRING_INDEX()

SELECT SUBSTRING_INDEX(col, '||', 1) FROM tbl;

答案 1 :(得分:0)

例如,要在||之前提取前十一(11)个字符,您可以使用以下内容:

(...........)\|\|

(记住你必须转义文字|,因为它代表左右操作数中的语言联合)这些将匹配模式{{1}之前的任意十一(11)个字符组。 (但这可以包括||本身)。如果您希望它位于字符串的开头,则可以使用||字符锚定它。如果您想要不同数量的字符,只需更改右括号前的点数^即可。请求的模式将位于生成的匹配器的第1组中。

要从第一对.字符中获取它,您必须考虑字符串不能在模式|内编码,尽管所有11个字符串的语言仍然是常规(因此,它确实可以用正则表达式表示)这种表达式的模式太复杂了,无法在这里表达。如果您将要求放宽到任何不包含||序列的字符串(任何长度),并且后跟||匹配,则可以使用以下内容(将其锚定到开头线):

||

请参阅demo