2013-10-21 19 views
20

Son '=' (http://www.domain.com?query=blablabla -> blablabla) öğesinden sonra herşeyi ayıklamam gerekiyor, ancak bu sorgu tüm dizeleri döndürüyor. Burada yanlış gitti Nerede:SQL Belirli bir karakterden sonra her şeyi seç

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

'u bulduktan sonra döndürür. Hangi veritabanı motorunu kullanıyorsunuz? SQL Server değil, değil mi? – acfrancis

cevap

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

fazla referans için http://www.w3resource.com/mysql/string-functions/mysql-substring_index-function.php kullanın.

+2

Bu, bazı sorunlara neden olabilir, sütunda '=' yoktur, bu durumda kullanabilirsiniz: SELECT IF (LOCATE ('=', supplier_reference), SUBSTRING_INDEX (supplier_reference, '=', - 1), default_value) Ps_product '' ve orijinal tam sütun döndüren yerine bir varsayılan değer ayarlayabilirsiniz. – golddragon007

+0

Dize birden fazla '=' içeriyorsa ve her şeyden sonra istiyorum '='? –

7

bu (dizede birden '=' karakteri varsa çalışması gerekir) deneyin:

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

MySQL bu deneyin.

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

Katkınız için teşekkürler. Bu sorunun nasıl çözüldüğüne dair bir açıklama eklemek daha yararlı olacaktır. –

0

SQL Management studio için BWS'nin bir varyasyonunu kullandım. sembol yoksa bu '=' veya NULL sağındaki verileri alır: dizede '=' karakteri birden varsa MySQL

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 
1

, bu işleri

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

Alt öğesi, ilk =

+0

Birden çok '=' olduğunda ve '=' ilk oluşumundan sonra dize istediğimizde bu yararlı oldu –

İlgili konular