sql >> Databáze >  >> RDS >> Mysql

Zdá se, že MySQL Query nesplňuje očekávání

Dostáváte tento řádek, protože porovnáváte řetězce. "500" >= "60" je pravda, kvůli pořadí znaků ASCII.

Musíte změnit typ minutes sloupec nebo analyzovat hodnotu při filtrování dat. Např.

SELECT *, CONVERT(minutes,UNSIGNED INTEGER) AS minutes_int
...
WHERE
...
AND `minutes_int` >= 600
...

Můžete také zkusit přímo porovnat hodnotu řetězce s celočíselnou hodnotou, např.

AND `minutes` >= 600

odstraněním čárek, ale doporučuji, abyste přemýšleli o změně formátu sloupce, pokud je to možné, protože minuty představují varchar(11) není správné a také způsobí, že budete bezdůvodně zabírat spoustu místa.



  1. Neplatný typ parametru (numpy.int64) při vkládání řádků pomocí executemany()

  2. Adaptivní dynamické statistiky snižují výkon v 12.1.0.2 RAC

  3. mysql2sqlite.sh Auto_Increment

  4. Jak odstranit úvodní a/nebo koncové mezery řetězce v T-SQL