Lo so, è stato scritto tanto, ho letto ma non ne vengo fuori. :hard:
$Query = "SELECT * FROM elenco WHERE titolo LIKE '%" & TB_titolo.text & "%';"
La questione è come fare se la stringa (TB_titolo.text) contiene il carattere ' (apice).
Ho provato ad utilizzare i consigli qui raccontati.http://www.gambas-it.org/smf/index.php?topic=3340.30 (http://www.gambas-it.org/smf/index.php?topic=3340.30)
Ma niente da fare!
:'(
Lo so, è stato scritto tanto, ho letto ma non ne vengo fuori. :hard:
$Query = "SELECT * FROM elenco WHERE titolo LIKE '%" & TB_titolo.text & "%';"
La questione è come fare se la stringa (TB_titolo.text) contiene il carattere ' (apice).
Ho provato ad utilizzare i consigli qui raccontati.http://www.gambas-it.org/smf/index.php?topic=3340.30 (http://www.gambas-it.org/smf/index.php?topic=3340.30)
Ma niente da fare!
:'(
Se hai fatto le prove sul mio “applicativo” la corretta sintassi di LIKE è questa:
Se provi dal browser:
SELECT *
FROM miaTabella
WHERE Tab_Naz LIKE("Pol'%")
Quindi col codice:
sNazione = "Pol'"
sMioSql = "SELECT * FROM miaTabella WHERE Tab_Naz LIKE(" & "\"" & sNazione & "%\"" & ");"
Oppure:
sMioSql = "SELECT * FROM miaTabella WHERE Tab_Naz LIKE(" & "\"" & sNazione & "%\");"
:ciao:
:ok:
Grazie Gianluigi,
Stavo però vedendo che
"\"" & TB_titolo.text & "%\"
applicato al titolo " L'anello "
funziona se cerchi " l'a " ma anche " l' "
Se invece ricerchi " anello " o meno astutamente " ' " non trova nulla.
Ho allora provato con
"%\"" & TB_titolo.text & "%\"
Ma così non trova più nulla ???
:hard: :hard: :hard:
Giusto in SQLite:
La corretta sintassi nel browser:
SELECT *
FROM miaTabella
WHERE Tab_Naz LIKE("%'%")
Forse con Quote ti rimane più facile, sempre con il mio applicativo in SQLite puoi fare questa prova
sNazione = "'"
sMioSql = "SELECT * FROM miaTabella WHERE Tab_Naz LIKE(" & Quote("%" & sNazione & "%") & ");"
Credo che la differenza sia solo nelle parentesi che MySQL non usa, ma io di MySQL non ne so nulla...
:ciao:
Ciao, il carattere ' durante la costruzzione della stringa sql, va raddoppiato. quindi la sintassi diventa:
$Query = "SELECT * FROM elenco WHERE titolo LIKE '%" & Replace$(TB_titolo.text, "'", "''") & "%';"
In base ai livelli di annidamento delle query, l'apice puo anche quadruplicare e così via.
Ciao, ti porto l'esempio su db SQLSERVER.
Questa è la sintassi per l'inserimento "normale" in una tabella:
INSERT INTO TBL_TEST (MIA_COLONNA) VALUES ('L''ALBERO')
Un altro metodo per effettuare l'insert può essere, magari in una store procedure, quello di costruire la sintassi sql come stringa per poi usarla come parametro
per la funzione EXEC (stringasql).
Questa è la sintassi per l'inserimento tramite EXEC:
DECLARE @STRSQL VARCHAR(8000)
SET @STRSQL = 'INSERT INTO TBL_TEST (MIA_COLONNA) VALUES (''L''''ALBERO'')'
EXEC(@STRSQL)
Come vedi gli apici sono raddoppiati rispetto alla prima sintassi.
L'esempio che ti ho mostrato non giustifica l'utilizzo dell'EXEC rispetto alla versione "normale", ma torna utile nel caso in cui si debbano eseguire delle istruzioni sql particolari
o molto complesse.
Questo stesso principio vale anche per l'istruzione SELECT.
Ciao.