PDA

View Full Version : [SQL] Query di concatenazione...


Andrea16v
14-09-2006, 16:03
In una tabella che uso spesso per lavoro ho una colonna di 300 righe circa con il nome e l'estensione di una serie di immagini..

1_3.jpg
1_2.jpg
1_12.jpg

...

1_300.jpg

I nomi non seguono una logica apparente, ma sono casuali.
Mi servirebbe, per darle in input a una procedura che ho creato, ottenere questi valori nella forma:

"1_3.jpg" "1_2.jpg" "1_12.jpg" ... "1_300.jpg"

scriverli quindi di seguito lasciando uno spazio tra uno e l'altro e mantenendo l'ordinamento
Come posso fare?

Primo passo pensavo di concatenare ad ogni valore le virgolette prima del nome del file, e le virgolette e uno spazio a fine nome file.
Poi però devo concatenarli tutti assieme, magari con un ciclo for che scorra la colonna e stampi un valore alla volta, solo che non so come si possa implementare questa ciclo in SQL.. :doh:

shinya
14-09-2006, 19:24
In sql non hai la possibilità di fare "cicli". Puoi fare qualcosa di lontanamente simile in oracle con il costrutto "start with...connect by" ma solo in determinati casi, e direi che questo non è tra i possibili.

Devi fare un ciclo sui risultati della query nel linguaggio che usi, che non so quale sia...(php?)

Andrea16v
14-09-2006, 20:02
In sql non hai la possibilità di fare "cicli". Puoi fare qualcosa di lontanamente simile in oracle con il costrutto "start with...connect by" ma solo in determinati casi, e direi che questo non è tra i possibili.

Devi fare un ciclo sui risultati della query nel linguaggio che usi, che non so quale sia...(php?)

Purtroppo non ho modo di intervenire sul programma che fa da interfaccia con il database, mi devo inventare qualcosa di casereccio da Query Browser..
Mi basta ottenere quella stringa, sotto qualsiasi forma...
L'alternativa è farlo a mano tramite copia-incolla.. :eek:

marco.r
14-09-2006, 20:35
Purtroppo non ho modo di intervenire sul programma che fa da interfaccia con il database, mi devo inventare qualcosa di casereccio da Query Browser..
Mi basta ottenere quella stringa, sotto qualsiasi forma...
L'alternativa è farlo a mano tramite copia-incolla.. :eek:
Non mi e' chiaro come puoi dare in pasto il risultato al tuo programma. Via file, via linea di comando, via altro ?

Andrea16v
14-09-2006, 21:17
Non mi e' chiaro come puoi dare in pasto il risultato al tuo programma. Via file, via linea di comando, via altro ?

Via linea di comando.
(anche se al limite mi andrebbe bene anche via file, basterebbe fare un copia-incolla sulla linea di comando della stringa contenuta nel file, posso permettermi anche di spezzarla e processare i dati a blocchi)

ceschi
15-09-2006, 10:37
in sql server puoi fare un ciclo con i cursori

declare @Stringa varchar (100),
@Risultato varchar(8000)

declare <nomecursore> CURSOR FOR
SELECT <campo> FROM <tabella> WHERE <condizioni>

Open <nomecursore>

FETCH NEXT FROM <nomecursore> INTO @Stringa

WHILE @@FETCH_STATUS = 0
BEGIN
SET @Risultato = ISNULL(@Risultato, '') +' '+ @Stringa
FETCH NEXT FROM <nomecursore> INTO @Stringa
END

PRINT @Risultato

CLOSE <nomecursore>
DEALLOCATE <nomecursore>

Ciao