Ответ 1
select SUBSTRING_INDEX(supplier_reference,'=',-1) from ps_product;
Для дополнительной справки используйте http://www.w3resource.com/mysql/string-functions/mysql-substring_index-function.php.
Мне нужно извлечь все после последнего '=' (http://www.domain.com?query=blablabla → blablabla), но этот запрос возвращает целые строки. Где я ошибся здесь:
SELECT RIGHT(supplier_reference, CHAR_LENGTH(supplier_reference) - SUBSTRING('=', supplier_reference))
FROM ps_product
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 я использовал вариант ответа 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