Newsgroup: it.comp.appl.access
Titolo: Middle in SQL?

Help,
Come si estrae in SQL la parte centrale di una stringa?
Left e Right funzionano....purtroppo il Middle che c'è in Access non funzia
in SQL....
Grazie1000

 ha scritto nel messaggio
news:21%Ha.200682$g92.4...@news2.tin.it...

Dio... io uso un left di un rigth (left(right(<lastringa>))) o un rigth di
un left...
In abbinamento al Len ottieni la stessa cosa.
per esempio se in Access il Mid(<lastringa>,5,3) in SQL diventa
rigth(left(<lastringa>,7),3).
Bye.

 ha scritto nel messaggio
news:21%Ha.200682$g92.4...@news2.tin.it...

Non è vero.
C'è mid che funziona perfettamente.
Diepnde come la usi e con che criteri intendi prendere la parte centrale.
Antonio

 ha scritto nel messaggio
news:En%Ha.101931$lK4.2...@twister1.libero.it...

Esempio:
la stringa è così composta:
03-12345
03-123
03-1234
Voglio avere come risultato tutto quello che stà alla destra del trattino
ossia dopo il 3 carattere (escluso)
12345
123
1234
il tutto in SQL
Mandi.....

 ossia dopo il 3 carattere (escluso)
mid(str;instr(str;"-")+1)
dove str è il nome del tuo campo da splittare
Antonio

 ha scritto nel messaggio
news:VZ0Ia.99422$Ny5.2...@twister2.libero.it...

Forse mi sono spiegato male o non capisco (non sono molto esperto):
1) sto lavorando con un adp
2) sql(sql 2000)  non mi accetta il comando mid...
forse il codice si riferisce a VBA?!
cmq smanettando in base alla info di George (Che ringrazio) propongo questa
soluzione (che funziona da DIO!!):
data un tabella dal nome dbo.FAX.FATTURA dove troviamo il campo FATTURA
(NVARCHAR (50)
che contiente dati tipo
03-12345
03-121
03-1234
dove sono ad indicare esattamente anno e numero di fattura.
Avevo la necessità vista la mole di dati di ottenre un valore INT dato
dall'anno+fattura tipo 312345 oppure 3121 alfine di poter
ordinare in maniera automatica da dentro SQL la sequenza delle fatture.
Valida l'idea di intervenire dentro ACCESS (vba) per tale necessità ma con
la mole di dati che mi ritrovo e per le precedenti esperienze
gli ordinamenti è meglio che li faccia SQL......
L'esempio in oggetto riguardava ordinamenti di 40.000 righe di  dati.
Di seguito il codice SQL:
 CASE   WHEN (LEN( DBO.FAX.FATTURA) =4 ) THEN
cast((LEFT(dbo.FAX.Fattura,2))+RIGHT(LEFT(DBO.FAX.FATTURA,4),1) as int)ELSE
(CASE WHEN (LEN( DBO.FAX.FATTURA) =5 ) THEN
cast((LEFT(dbo.FAX.Fattura,2))+RIGHT(LEFT(DBO.FAX.FATTURA,5),2) as int)
            WHEN (LEN( DBO.FAX.FATTURA) =6 ) THEN
cast((LEFT(dbo.FAX.Fattura,2))+RIGHT(LEFT(DBO.FAX.FATTURA,6),3) as int)
            WHEN (LEN( DBO.FAX.FATTURA) =7 ) THEN
cast((LEFT(dbo.FAX.Fattura,2))+RIGHT(LEFT(DBO.FAX.FATTURA,7),4) as int)
            WHEN (LEN( DBO.FAX.FATTURA) =8 ) THEN
cast((LEFT(dbo.FAX.Fattura,2))+RIGHT(LEFT(DBO.FAX.FATTURA,8),5) as int)
            WHEN (LEN( DBO.FAX.FATTURA) = 9 ) THEN
cast((LEFT(dbo.FAX.Fattura,2))+RIGHT(LEFT(DBO.FAX.FATTURA,9),6) as int)
ELSE NULL END)  END AS ORDFAT
dove ORDFAT è il risultato del mio ordinamento.
Ho preso una strada lungo sicuramente, attendo pareri in merito!
Ringrazio cmq x l'attenzione
Saluti
Slim

 forse il codice si riferisce a VBA?!
La funzione Mid in SQL funziona, evidentemente il problema è ADP, dal quale
comunque mi chiamo fuori...
Antonio

 ha scritto nel messaggio
news:21%Ha.200682$g92.4...@news2.tin.it...

SUBSTRING ()
Funziona esattamente come mid
Sib