我需要提取最后一个'='(http://www.domain.com?query=blablabla-〉blablabla)之后的所有内容,但是这个查询返回了整个字符串。
SELECT RIGHT(supplier_reference, CHAR_LENGTH(supplier_reference) - SUBSTRING('=', supplier_reference))
FROM ps_product
我需要提取最后一个'='(http://www.domain.com?query=blablabla-〉blablabla)之后的所有内容,但是这个查询返回了整个字符串。
SELECT RIGHT(supplier_reference, CHAR_LENGTH(supplier_reference) - SUBSTRING('=', supplier_reference))
FROM ps_product
8条答案
按热度按时间2hh7jdfx1#
请将此用作进一步参考。
lx0bsm1f2#
尝试以下操作(如果字符串中有多个“=”字符,它应该可以工作):
c0vxltue3#
在MySQL中尝试此操作。
4zcjmb1e4#
在MySQL中,如果字符串中有多个“=”字符,则此操作有效
它返回找到第一个=后(+1)的子字符串
2o7dmzc55#
如果字符串为
要向右选择:
向左选择
vtwuwzda6#
我一直在做类似的事情,经过几次尝试和失败,我想出了这个:
示例:字符串至测试开启= 'ab,cd,ef,gh'
我想从字符串中提取最后一个出现的“,”(逗号)之后的所有内容...结果是“gh”。
我的问题是:
现在让我试着解释一下我做了什么...
1.我必须找到字符串中最后一个“,”的位置,并计算wantedString长度,使用
LOCATE(",",REVERSE('ab,cd,ef,gh'))-1
,通过反转初始字符串,我实际上必须找到字符串中第一个出现的“,”......这并不难做到......然后使用-1,实际上找到没有“,"的字符串长度。1.通过从初始字符串长度中减去我在第一步中计算的字符串长度来计算wantedString的位置:
长度(“ab,cd,ef,gh ')-(定位(“,",反向(”ab,cd,ef,gh'))-1)+1
我有(+1),因为我实际上需要最后一个“,”之后的字符串位置..并且不包含“,"。希望它有意义。
1.剩下要做的就是对初始字符串FROM计算出的位置运行SUBSTR。
我还没有在大字符串上测试过这个查询,所以我不知道它有多慢。所以如果有人真的在大字符串上测试它,我很乐意知道结果。
8fsztsew7#
对于SQL Management studio,我使用了BWS答案的一个变体,这将获取'='右边的数据,如果符号不存在,则为NULL:
oaxa6hgo8#