2013-10-21 38 views

risposta

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

Si prega di utilizzare http://www.w3resource.com/mysql/string-functions/mysql-substring_index-function.php per ulteriore riferimento.

+2

Ciò può causare alcuni problemi, non c'è nessun '=' nella colonna, in questo caso è possibile utilizzare: 'SELEZIONA SE (LOCATE ('=', supplier_reference), SUBSTRING_INDEX (supplier_reference, '=', - 1), default_value) FROM ps_product; 'e puoi impostare un valore predefinito invece di restituire la colonna originale completa. – golddragon007

+0

Cosa succede se la stringa contiene più '=' e voglio tutto dopo il primo '='? –

7

Prova questo (dovrebbe funzionare se ci sono più personaggi '=' nella stringa):

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

Prova questa in MySQL.

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

Grazie per il tuo contributo. Sarebbe più utile aggiungere qualche spiegazione su come questo risolva il problema. –

0

Per SQL Management studio ho utilizzato una variazione della risposta di BWS. Questo ottiene i dati a destra della '=', o NULL se il simbolo non esiste:

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

In MySQL, questo funziona se ci sono più '=' caratteri della stringa

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

Restituisce la sottostringa dopo (+1) dopo aver trovato il primo =

+0

Questo è stato utile quando ci sono più '=' e vogliamo una stringa dopo la prima occorrenza di '=' –

Problemi correlati