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 это работает, если в строке
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