Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
MsSQL2005: INSTR vs CHARINDEX
lunedì 26 maggio 2008 - 16.59
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
rebzone
Profilo
| Newbie
4
messaggi | Data Invio:
lun 26 mag 2008 - 16:59
Ciao a tutti,
mi sono appena registrato al forum e vi pongo immediatamente un quesito che mi sta facendo impazzire :(
Programmo in vb.net, e sto tentando di fare l'upsize di un db sviluppato (ed utilizzato per 3 anni) in Access a MSSQL (del quale sono alle primissime armi).
A parte il fatto che ho già dovuto riscrivere metà programma, mi si pone il problema delle query SQL.
In particolare, il primo ostacolo che non riesco a superare è il seguente:
nel database ho una colonna con salvate all'interno delle array (ad es. "1,5,3,4,13"), sulle quali, finchè il programma poggiava su access, utilizzavo la funzione INSTR nel seguente modo:
... INSTR(',' & ColumnName & ',' , ',3,') ...
per controllare se all'interno del campo interrogato figurava il valore 3 (capirete questa forma meglio di me, ma per chiarezza la spiego ulteriormente: praticamente, i valori indicati sopra, "1,5,3,4,13" li "trasformo" in ",1,5,3,4,13," in modo da controllare che effettivamente il valore 3 ci sia e, eventualmente, sia unico (se non aggiungessi le virgole all'inizio e alla fine del campo, l'interrogazione mi restituirebbe anche il valore 13)).
Ora, in MsSQL ho provato ad utilizzare la stessa modalità con la funzione CHARINDEX nel modo seguente:
... CHARINDEX(',3,' , ',' & ColumnName & ',') ...
ma non funziona...cioè funzionerebbe, ma non mi permette di aggiungere le virgole come in Access, e questo era un requisito fondamentale affinchè mi estraesse soltanto il valore 3 e non anche il 13.
Come posso fare? ...Ho visto che si fa un gran parlare di stored procedures, ma come vi ho già detto, con MsSQL sono totally noob. Oltre a ciò, mi piacerebbe riuscire a gestire tutto via codice nell'applicazione vb, in modo che se mi si ripresentasse la necessità di cambiare nuovamente il motore di database, avrei comunque tutto a portata di mano nel codice. Eventualmente, la stored procedure, la potrei creare via codice o deve perforza risiedere nel database?
Grazie infinite a tutti
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 26 mag 2008 - 22:01
>Ora, in MsSQL ho provato ad utilizzare la stessa modalità con
>la funzione CHARINDEX nel modo seguente:
>
>... CHARINDEX(',3,' , ',' & ColumnName & ',') ...
>
>ma non funziona...cioè funzionerebbe, ma non mi permette di aggiungere
>le virgole come in Access, e questo era un requisito fondamentale
>affinchè mi estraesse soltanto il valore 3 e non anche il 13.
Ciao Alberto,
in SQL Server l'operatore di concatenazione delle stringhe è il "+" non la "&" come in Access.
>Come posso fare? ...Ho visto che si fa un gran parlare di stored
>procedures, ma come vi ho già detto, con MsSQL sono totally noob.
Il problema principale è che il tuo "array" non rispetta la prima forma normale (a prescindere dal DBMS), quindi è una scelta infelice che hai compiuto in fase di design della base dati.
Potevi risolvere elegantemente il problema con una classica reazione 1-a-molti.
>Oltre a ciò, mi piacerebbe riuscire a gestire tutto via codice
>nell'applicazione vb, in modo che se mi si ripresentasse la necessità
>di cambiare nuovamente il motore di database, avrei comunque
>tutto a portata di mano nel codice. Eventualmente, la stored
>procedure, la potrei creare via codice o deve perforza risiedere
>nel database?
Nel db.
>Grazie infinite a tutti
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
rebzone
Profilo
| Newbie
4
messaggi | Data Invio:
mar 27 mag 2008 - 10:11
grazie mille per la risposta...mi hai risparmiato un sacco di tempo (bastava effettivamente sostituire i + agli &).
Grazie ancora e ciao! :)
Torna su
Stanze Forum
Elenco Threads
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 !