Mysql query con LIKE e parametro

sabato 03 ottobre 2009 - 20.50

andrestu Profilo | Expert

Salve a tutti,
ho una pagina Asp.net con un sqldatasource che interroga una tabella di un DB Microsoft Sql in base ad un parametro:

SelectCommand="SELECT [id], [indirizzo] FROM [tabellaEsempio] WHERE ([indirizzo] LIKE '%' + @indirizzo + '%')"

e fin qui tutto ok, il problema nasce quando faccio la stessa cosa con MySql, premetto che ho riprodotto la tabella in Mysql, ho configurato Asp.net in modo da interfacciarmi al server di MySql, ho verificato facendo una normale query di select e tutto funziona.
L'unico problema è che non riesco a far funzionare la stessa query e cioè se scrivo:

SelectCommand="SELECT id, indirizzo FROM tabellaEsempio WHERE (indirizzo LIKE '%' + @indirizzo + '%')"

Ottengo un errore di sintassi:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '+ 'parametro' + '%')' at line 1

Probabilmente è un errore di sintassi, le ho provate tutte, levare i più, mettere i segni di percentuale in modo diverso etc. avete qualche suggerimento???

altre prove
se la scrivo così:

SelectCommand="SELECT id, indirizzo FROM tabellaEsempio WHERE (indirizzo LIKE '%testoDiProva%')"

e se elimino dal controllo Sqldatasource la dichiarazine del parametro:

<SelectParameters>
<asp:ControlParameter Name="indirizzo" ControlID="TextBoxIndirizzo" PropertyName="Text" />
</SelectParameters>


funziona regolarmente, il problema è che io devo fare la ricerca in base al parametro che viene valorizzato da un altro controllo (TextBoxIndirizzo)...

lbenaglia Profilo | Guru

>SelectCommand="SELECT id, indirizzo FROM tabellaEsempio WHERE
>(indirizzo LIKE '%' + @indirizzo + '%')"
>
>Ottengo un errore di sintassi:
>You have an error in your SQL syntax; check the manual that corresponds
>to your MySQL server version for the right syntax to use near
>'+ 'parametro' + '%')' at line 1
>
>Probabilmente è un errore di sintassi, le ho provate tutte, levare
>i più, mettere i segni di percentuale in modo diverso etc. avete
>qualche suggerimento???

Ciao Andrea,

Non conosco MySQL ma hai provato a ricorrere alla funzione CONCAT()?

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Per maggiori dettagli fai riferimento alla documentazione ufficiale:
http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_concat

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

andrestu Profilo | Expert

sinceramente non conosco la funzione CONCAT(), a cosa serve?

lbenaglia Profilo | Guru

>sinceramente non conosco la funzione CONCAT(), a cosa serve?
A concatenare le stringhe.
Hai letto il link che ti ho passato?

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

andrestu Profilo | Expert

Grazie x il link ma non credo che sia adatto al mio problema,
io devo fare una query in cui i risultati dipendono da un parametro, il fatto è che io voglio anche i risultati le cui parti delle parole sono formate dal mio parametro mi spiego con un esempio:

se io nel parametro metto "azienda" i risultati devono essere non solo esclusivamente "azienda" ma anche "azienda1" oppure "xaziendaxy" e così via... Io normalmente questo lo ottengo con

WHERE ([nomeColonna] LIKE '%' + @parametro + '%')

e non con

WHERE ([nomeColonna] = @parametro)

solo che non so come tradurre la cosa in Mysql... il mio problema sembra una questione di sintassi

lbenaglia Profilo | Guru

>Grazie x il link ma non credo che sia adatto al mio problema,
Perché?!
La funzione CONCAT() serve appunto per concatenare i caratteri jolly '%' al valore del tuo parametro.
Hai provato la query?

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

andrestu Profilo | Expert

ok scusa ho risolto con la tua indicazione rivedendo meglio il link che mi hai mandato

WHERE (nome LIKE CONCAT('%', @nome ,'%'))

Grazie mille
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