Autore Topic: Se una stringa con MySql contiene una singola virgoletta  (Letto 771 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.213
  • Ne mors quidem nos iunget
    • Mostra profilo
« Ultima modifica: 20 Maggio 2025, 01:31:48 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline giob1642

  • Grande Gambero
  • ***
  • Post: 159
    • Mostra profilo
Re: Se una stringa con MySql contiene una singola virgoletta
« Risposta #1 il: 10 Agosto 2013, 20:21:50 »
secondo le specifiche mysql(altri database ?) le doppie "definiscono una stringa"come tate può essere integrata nella stringa della query così:
query="select * from  tabteA where column3 = definiscono una stringa"
viceversa se  assegnamo a=column3  la query diventa
 query="select * from  tabteA where" & a & "=" definiscono una stringa"
la stringa" definiscono una stringa" per mysql è ambigua  ,necessitano quindi degli apici singoli che non fanno altro di non iterpretare la stringa  e gli apici vengono aggiunti cosi
query="select * from  tabteA where " & a & "='" definiscono una stringa"'"
viceversa se  assegnamo b=" definiscono una stringa"   la query diventa
query="select * from  tabteA where " & a & "='" & b &"'"
In definitiva quello inserito tra apici singoli non viene interpretato ma viene inserito nequery così com'è.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.830
    • Mostra profilo
Re: Se una stringa con MySql contiene una singola virgoletta
« Risposta #2 il: 12 Agosto 2013, 17:37:42 »
Il discorso è valido in tutti i lunguaggi, che inviano il parsing delle stringhe ad apposite librerie esterne (di soli C/Perl o Python).
Il concetto è che alcuni caratteri funzono da caratteri di controllo, per cui è necessario indicare che questi non vanno interpretati come controlli, bensì come normali caratteri.
Nella sintassi Perl, quella normalmente usata, e su cui si basano più o meno tutti i linguaggi, identificano nel carattere "\" come indicatore che il carattere di seguito non deve essere considerato come controllo.
Il motivo del doppio slash è perchè anch'esso è un carattere di controllo, per cui nelle varie trasformazioni questo viene interpretato suo malgrado.
Anteponendo uno slash davanti allo slash componente la stringa, indica al compilatore che il secondo carattere deve essere passato così com'è alla libreria che ne farà il parsing. A quest'ultima, quindi, verrà passato un slo slash (il primo viene eliminato dal linguaggio primario), e sua volta lo userà per interpretare il successivo carattere.
A volte capita di trovare stringhe con quattro o più slash, conseguentemente al numero di passaggi che deve fare la stringa (da una libreria all'altra...).