Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 14 su 14

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Genova, presenza costante a Milano
    Messaggi
    100
    ...e di conseguenza:

    MariaDB [test]> SELECT a FROM t WHERE a > '100';
    +-------+
    | a |
    +-------+
    | 20000 |
    | 2 |
    +-------+
    2 rows in set (0.00 sec)

    Questo si risolve togliendo le virgolette, ma tutti le usano perché pensano che sia un modo intelligente per evitare l'sql injection, o forse per pigrizia.

  2. #2
    Utente di HTML.it L'avatar di Van83
    Registrato dal
    Jan 2010
    Messaggi
    66
    Ah, ok ok, ma la cosa strana è che se dalla mia query elimino la parte del between,

    AND data_audit between '2014-01-01' AND '2014-01-15'
    La query viene eseguita correttamente.

    Provo a verificare!

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    Quote Originariamente inviata da Van83 Visualizza il messaggio
    Ah, ok ok, ma la cosa strana è che se dalla mia query elimino la parte del between,



    La query viene eseguita correttamente.

    Provo a verificare!

    ci sono record che verificano la condizione between?

    metti il nome tabella prima dei field.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Genova, presenza costante a Milano
    Messaggi
    100
    Purtroppo è logico, visto che converte. Immagino che il risultato fosse comunque giusto, perché MySQL cerca di convertire in modo intelligente. Le stringhe numeriche sono convertite bene e i caratteri non numerici prima e dopo in genere vengono ignorati (non è una cosa che puoi usare in modo affidabile però). Il problema vero è che ORDER BY ordina alfabeticamente, quindi:

    MariaDB [test]> CREATE TABLE t (a VARCHAR(5)) ENGINE=InnoDB;
    Query OK, 0 rows affected (0.43 sec)

    MariaDB [test]> INSERT INTO t VALUES ('100'),('1'),('20000'),('2');
    Query OK, 4 rows affected (0.09 sec)
    Records: 4 Duplicates: 0 Warnings: 0

    MariaDB [test]> SELECT * FROM t ORDER BY a;
    +-------+
    | a |
    +-------+
    | 1 |
    | 100 |
    | 2 |
    | 20000 |
    +-------+
    4 rows in set (0.00 sec)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.