Autore Topic: [RISOLTO] Ricerca MySQL di stringa contenente '  (Letto 1353 volte)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.725
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
[RISOLTO] Ricerca MySQL di stringa contenente '
« il: 05 Dicembre 2014, 21:25:13 »
 Lo so, è stato scritto tanto, ho letto ma non ne vengo fuori. :hard:

Codice: gambas [Seleziona]
$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
Ma niente da fare!
 :'(
« Ultima modifica: 06 Dicembre 2014, 14:49:59 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.239
  • Tonno verde
    • Mostra profilo
Re: Ricerca MySQL di stringa contenente '
« Risposta #1 il: 05 Dicembre 2014, 23:09:11 »
Lo so, è stato scritto tanto, ho letto ma non ne vengo fuori. :hard:

Codice: gambas [Seleziona]
$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
Ma niente da fare!
 :'(

Se hai fatto le prove sul mio “applicativo” la corretta sintassi di LIKE è questa:
Se provi dal browser:
Codice: sql [Seleziona]
SELECT *
FROM miaTabella
WHERE  Tab_Naz LIKE("Pol'%")


Quindi col codice:
Codice: gambas [Seleziona]
sNazione = "Pol'"
sMioSql = "SELECT * FROM miaTabella WHERE Tab_Naz LIKE(" & "\"" & sNazione & "%\"" & ");"

Oppure:
Codice: gambas [Seleziona]
sMioSql = "SELECT * FROM miaTabella WHERE Tab_Naz LIKE(" & "\"" & sNazione & "%\");"


 :ciao:
« Ultima modifica: 05 Dicembre 2014, 23:21:33 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.725
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: Ricerca MySQL di stringa contenente '
« Risposta #2 il: 06 Dicembre 2014, 09:16:54 »
 :ok:
Grazie Gianluigi,
Stavo però vedendo che
Codice: gambas [Seleziona]
 "\"" & 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
Codice: gambas [Seleziona]
"%\"" & TB_titolo.text & "%\"

Ma così non trova più nulla ???
 :hard: :hard: :hard:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.239
  • Tonno verde
    • Mostra profilo
Re: Ricerca MySQL di stringa contenente '
« Risposta #3 il: 06 Dicembre 2014, 13:53:23 »
:ok:
Grazie Gianluigi,
Stavo però vedendo che
Codice: gambas [Seleziona]
 "\"" & 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
Codice: gambas [Seleziona]
"%\"" & TB_titolo.text & "%\"

Ma così non trova più nulla ???
 :hard: :hard: :hard:

In questo momento non ho sottomano Gambas e DB ma LIKE funziona così se cerchi la parola “L'Aquila”, usi LIKE(“L'A%”) oppure LIKE(“%uila”) oppure LIKE(“%qui%”).
Mi sembra che nel secondo caso tu stia sbagliando sintassi.
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.725
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: Ricerca MySQL di stringa contenente '
« Risposta #4 il: 06 Dicembre 2014, 14:49:21 »
...hai ragione la sintassi è sbagliata, anche quella che cercavo d'usare è sbagliata.
Adesso ho sistemato tutto.
La verità è che non ho un testo completo con la sintassi MySQL :'(

Grazie, adesso mi dedico all'inserimento i un record nel DB!
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.239
  • Tonno verde
    • Mostra profilo
Re: [RISOLTO] Ricerca MySQL di stringa contenente '
« Risposta #5 il: 06 Dicembre 2014, 15:09:28 »
Giusto in SQLite:
La corretta sintassi nel browser:
Codice: sql [Seleziona]
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
Codice: gambas [Seleziona]
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:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Re: [RISOLTO] Ricerca MySQL di stringa contenente '
« Risposta #6 il: 09 Dicembre 2014, 20:35:55 »
Ciao, il carattere ' durante la costruzzione della stringa sql, va raddoppiato. quindi la sintassi diventa:
Codice: gambas [Seleziona]

$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.
« Ultima modifica: 09 Dicembre 2014, 20:37:38 da Berserker79 »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.239
  • Tonno verde
    • Mostra profilo
Re: [RISOLTO] Ricerca MySQL di stringa contenente '
« Risposta #7 il: 12 Dicembre 2014, 21:44:10 »
In base ai livelli di annidamento delle query, l'apice puo anche quadruplicare e così via.
Scusa il ritardo con cui riprendo il tuo post, ti vorrei chiedere se puoi precisare meglio questo passaggio che non ho capito.
Magari se credi con un esempio pratico...
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Re: [RISOLTO] Ricerca MySQL di stringa contenente '
« Risposta #8 il: 13 Dicembre 2014, 08:23:10 »
Ciao, ti porto l'esempio su db SQLSERVER.
Questa è la sintassi per l'inserimento "normale" in una tabella:
Codice: sql [Seleziona]

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:
Codice: sql [Seleziona]

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.
« Ultima modifica: 13 Dicembre 2014, 08:28:34 da Berserker79 »