sql >> Database >  >> RDS >> Mysql

MySQL integer-vergelijking negeert achterliggende alfatekens

In de meeste programmeertalen is het gebruikelijk om voorloopcijfers als een getal te interpreteren bij het converteren van een tekenreeks naar een getal.

Er zijn een aantal manieren om dit aan te pakken:

Gebruik voorbereide instructies en definieer de tijdelijke aanduiding waar u de waarde plaatst van een numeriek type. Dit voorkomt dat er strings in worden geplaatst.

Controleer op een hogere laag van de applicatie om de invoer te valideren en zorg ervoor dat deze numeriek is.

Gebruik het BINARY-sleutelwoord in mysql (ik vermoed alleen dat dit zou werken, heb het nooit echt geprobeerd, omdat ik altijd een goed validatiesysteem heb geïmplementeerd voordat ik een zoekopdracht uitvoer) -

SELECT *
FROM table 
WHERE BINARY ID = '32anystring';


  1. juiste slaapstand-annotatie voor byte[]

  2. MySQL:SELECTEER van een andere server

  3. SQL Server gebruikt een hoge CPU bij het zoeken in nvarchar-strings

  4. Een label gebruiken in een hebbende clausule in sqlachemy