我试图提取第一个' n'数据库中的字符在第一个' ||'之前符号任何人都可以做任何想法。这是表
表名 - >播放列表
fact->column name
PLKIDHYYFFEF||hello||ee
KDKOIJOFRFOFRFRF||how||tt
我一直在使用提取子字符串
"SELECT * FROM playlist WHERE playlist.fact LIKE %...%";
无法理解应保留哪种模式
答案 0 :(得分:0)
如果你想要'||'之前的任何内容,请使用SUBSTRING_INDEX()
:
SELECT SUBSTRING_INDEX(col, '||', 1) FROM tbl;
答案 1 :(得分:0)
例如,要在||
之前提取前十一(11)个字符,您可以使用以下内容:
(...........)\|\|
(记住你必须转义文字|
,因为它代表左右操作数中的语言联合)这些将匹配模式{{1}之前的任意十一(11)个字符组。 (但这可以包括||
本身)。如果您希望它位于字符串的开头,则可以使用||
字符锚定它。如果您想要不同数量的字符,只需更改右括号前的点数^
即可。请求的模式将位于生成的匹配器的第1组中。
要从第一对.
字符中获取它,您必须考虑字符串不能在模式|
内编码,尽管所有11个字符串的语言仍然是常规(因此,它确实可以用正则表达式表示)这种表达式的模式太复杂了,无法在这里表达。如果您将要求放宽到任何不包含||
序列的字符串(任何长度),并且后跟||
匹配,则可以使用以下内容(将其锚定到开头线):
||
请参阅demo。