[SQL] - dividere stringa .. LEFT + SUBSTRING?

lunedì 31 marzo 2008 - 10.39

angie81 Profilo | Junior Member

devo dividere il contenuto di un campo usando come delimitatore "/" per poi inserire i dati in un nuovo record..

in ASP.. avrei scritto...

left(CODICI_ATTIVITA, instr(CODICI_ATTIVITA, "/") - 1)

ma in SQL?

ho visto che la funzione INSTR è sostituita da SUBSTRING ..

ma se cambio il tutto in ..

left(CODICI_ATTIVITA, SUBSTRING (CODICI_ATTIVITA, 1, "/") - 1)

ho come errore "Sintassi non corretta in prossimità della parola chiave 'left'."

come risolvo?

alx_81 Profilo | Guru

>in ASP.. avrei scritto...
>left(CODICI_ATTIVITA, instr(CODICI_ATTIVITA, "/") - 1)
>ma in SQL?
>
>ho visto che la funzione INSTR è sostituita da SUBSTRING ..
No, non è la stessa cosa.. anzi. La SUBSTRING serve per estrarre una parte di stringa da un'altra in base ad un indice di partenza ed una lunghezza di caratteri da estrapolare. La Instr ricava la posizione di un carattere in una stringa, ovvero in SQL, la CHARINDEX:

CHARINDEX (transact-sql)
http://msdn2.microsoft.com/en-us/library/ms186323.aspx


>come risolvo?
Eccoti un esempio:
DECLARE @str varchar(20) SET @str = 'Ciao/Mondo' SELECT LEFT(@str, CHARINDEX('/', @str)-1) AS Risultato /* Risultato -------------------- Ciao */
Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

angie81 Profilo | Junior Member

ti ringrazio :)

se invece volessi recuperare tutto quello che è presente oltre il delimitatore "/"?

alx_81 Profilo | Guru

>ti ringrazio :)
>
>se invece volessi recuperare tutto quello che è presente oltre
>il delimitatore "/"?
Nel senso di sia la parte destra che la sinistra oppure la funzione puntuale per solo la parte destra?
Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

angie81 Profilo | Junior Member

a me servirebbe avere in una variabile.. la parte a sinistra di "/" e in un'altra quella a destra...

alx_81 Profilo | Guru

>a me servirebbe avere in una variabile.. la parte a sinistra
>di "/" e in un'altra quella a destra...
eccoti un esempio:

DECLARE @strL varchar(10) DECLARE @strR varchar(10) DECLARE @str varchar(30) SET @str = 'SINISTRA/destra' SELECT LEFT(@str, CHARINDEX('/', @str) - 1) AS SX , RIGHT(@str, CHARINDEX('/', REVERSE(@str)) - 1) AS DX

ho aggiunto la REVERSE, che "capovolge" la stringa:

REVERSE (transact-sql)
http://msdn2.microsoft.com/en-us/library/ms180040.aspx


Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

angie81 Profilo | Junior Member

grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5