Pagina 1 di 1

[SQL] Apostrofo nelle stringhe

MessaggioInviato: mar ott 31, 2006 11:01 am
da DilanDog
Una curiosità: l'unico modo di gestire stringhe contenenti il carattere dell'apostrofo nelle query sql è quello di passare ogni stringa attraverso una funzione che inserisca il doppio apostrofo?

Esempio: devo ricercare una frase tipo "L'aurora boreale" in questo modo:
Codice: Seleziona tutto
strTesto="L'aurore boreale"
strSql="SELECT * FROM Tabella WHERE Testo='" + strTesto + "'"

Eseguendo la query mi da un errore a meno che non elaboro la variabile strTesto sostituendo il carattere ' con '' (che non sono le virgolette ma è un apostrofo aggiuntivo). Non esiste altro modo? E qualcuno sa se ci sono delle funzioni già pronte allo scopo in VB o in ASP ?

MessaggioInviato: mar ott 31, 2006 11:05 am
da Rumez
Codice: Seleziona tutto

str = "L'aurora boreale"

str = Replace( str, "'", "''" )


MessaggioInviato: mar ott 31, 2006 11:14 am
da Boo
Davvero ti sei perso per così poco?

Codice: Seleziona tutto
strTesto="L\'aurore boreale"

MessaggioInviato: mar ott 31, 2006 11:35 am
da Robby78
Boo ha scritto:Davvero ti sei perso per così poco?

Codice: Seleziona tutto
strTesto="L\'aurore boreale"


penso che Dylan non voglia elaborare la stringa... mettere \' non è molto diverso da scrivere ''; credo che sia impossibile non trattare la stringa.
Io per comodità uso la funzione replace suggerita da Rumez: in questo modo non mi preoccupo di quanti apostrofi ci sono nè della loro posizione nella stringa; inoltre la puoi usare di default, visto che non ha controindicazioni se anche la stringa non contiene alcun apice.
Attento che dovresti fare la stessa operazione anche per i doppi apici...

MessaggioInviato: mar ott 31, 2006 11:51 am
da DilanDog
Robby ha centrato quello che volevo dire, non è che mi sono "perso" e da anni elaboro ogni stringa prima di passarla alle query. Anche il sostituire il carattere \ con l'apostrofo non cambia nulla, di fatto devo comunque elaborare la stringa prima di passarla. La domanda era proprio se era un'operazione davvero necessaria o se c'era un'alternativa, e a quanto pare l'alternativa non c'è

MessaggioInviato: mar ott 31, 2006 12:39 pm
da Boo
Errore mio, scusate.

MessaggioInviato: mar ott 31, 2006 2:22 pm
da Zane
Il carattere ' è una keyword in SQL: per utilizzarlo è necessario utilizzare appunta una escape sequence, che è appunto due volte apice singolo.

Di validatori di input già pronti non ce ne sono, ma è comunque banale realizzarli manualmente.