SQL SELECT某个字符后的所有内容

pop*_*utt 30 mysql sql substring string-length

我需要在最后一个'='之后提取所有内容(http://www.domain.com?query=blablabla - > blablabla)但是这个查询返回整个字符串.我在哪里出错了:

SELECT RIGHT(supplier_reference, CHAR_LENGTH(supplier_reference) - SUBSTRING('=', supplier_reference)) 
FROM ps_product
Run Code Online (Sandbox Code Playgroud)

vir*_*rus 52

select SUBSTRING_INDEX(supplier_reference,'=',-1) from ps_product;
Run Code Online (Sandbox Code Playgroud)

请使用http://www.w3resource.com/mysql/string-functions/mysql-substring_index-function.php进一步参考.

  • 这可能会导致一些问题,列中没有'=',在这种情况下你可以使用:`SELECT IF(LOCATE('=',supplier_reference),SUBSTRING_INDEX(supplier_reference,'=', - 1),default_value)从ps_product;`你可以设置一个默认值,而不是返回原始的完整列. (5认同)
  • 如果字符串包含多个'='并且我想要第一个'='之后的所有内容怎么办? (2认同)

BWS*_*BWS 8

试试这个(如果字符串中有多个'='字符,它应该有效):

SELECT RIGHT(supplier_reference, (CHARINDEX('=',REVERSE(supplier_reference),0))-1) FROM ps_product
Run Code Online (Sandbox Code Playgroud)

  • CHARINDEX 在问题所在的 MySQL 中不存在。MySQL 的替代方案是 LOCATE。 (2认同)

Lud*_*udo 8

在 MySQL 中,如果字符串中有多个“=”字符,则此方法有效

SUBSTRING(supplier_reference FROM (LOCATE('=',supplier_reference)+1))
Run Code Online (Sandbox Code Playgroud)

它返回找到第一个 = 之后(+1) 的子字符串


小智 5

在MySQL中尝试。

right(field,((CHAR_LENGTH(field))-(InStr(field,','))))
Run Code Online (Sandbox Code Playgroud)