0
私は、MySQL(MySQLサーバ5.7)で、次の表を持っている:なぜvarcharと数値の比較がTrueを返すのですか?
CREATE TABLE IF NOT EXISTS SIMCards (
SIMCardID INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
ICCID VARCHAR(50) UNIQUE NOT NULL,
MSISDN BIGINT UNSIGNED UNIQUE);
INSERT INTO SIMCards (ICCID, MSISDN) VALUES
(89441000154687982548, 905511528749),
(89441000154687982549, 905511528744),
(89441000154687982547, 905511528745);
私は、次のクエリを実行します。それは返す、というだけで、関連する行を返すよりも、しかし
SELECT SIMCardID FROM SIMCards WHERE ICCID = 89441000154687982549;
をそれらのすべて。私は引用符でICCIDを囲む場合、それは例えば、正常に動作します:
SELECT SIMCardID FROM SIMCards WHERE ICCID = '89441000154687982549';
私は予想通り、なぜ最初のSELECTクエリが動作しませんか?
文字列比較は数値比較とは異なります。一方向またはそれ以外の方法で比較する場合は、値をvarcharまたはintなどのいずれかに型キャストする必要があります。 –