SQL выбирает все после определенного символа

Мне нужно извлечь все после последнего '=' (http://www.domain.com?query=blablabla - > blablabla), но этот запрос возвращает все строки. Где я ошибся здесь:

SELECT RIGHT(supplier_reference, CHAR_LENGTH(supplier_reference) - SUBSTRING('=', supplier_reference)) 
FROM ps_product

5 ответов


select SUBSTRING_INDEX(supplier_reference,'=',-1) from ps_product;

пожалуйста, используйте http://www.w3resource.com/mysql/string-functions/mysql-substring_index-function.php для более дальнеишей справки.


попробуйте это (это должно работать, если в строке есть несколько символов'='):

SELECT RIGHT(supplier_reference, (CHARINDEX('=',REVERSE(supplier_reference),0))-1) FROM ps_product

попробуйте это в MySQL.

right(field,((CHAR_LENGTH(field))-(InStr(field,','))))

в MySQL это работает, если в строке

SUBSTRING(supplier_reference FROM (LOCATE('=',supplier_reference)+1))

он возвращает подстроку после того, как(+1) нашел первый =


для SQL Management studio я использовал вариант ответа BWS. Это возвращает данные справа от ' = ' или NULL, если символ не существует:

   CASE WHEN (RIGHT(supplier_reference, CASE WHEN (CHARINDEX('=',supplier_reference,0)) = 0 THEN
    0 ELSE CHARINDEX('=', supplier_reference) -1 END)) <> '' THEN (RIGHT(supplier_reference, CASE WHEN (CHARINDEX('=',supplier_reference,0)) = 0 THEN
    0 ELSE CHARINDEX('=', supplier_reference) -1 END)) ELSE NULL END