我在MySQL (MySQL Server5.7)中得到了下表:
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查询不像我预期的那样工作?
发布于 2017-07-04 15:08:58
MySQL中的整数的最大值(无符号)为4294967295。您的ID大大超过了这个数字。因此,如果您按整数从数据库中选择*,则您的行为将没有定义,因为您选择的数字不能用整数表示。
我不清楚为什么要得到所得到的结果,但我确实知道,当数据不能用整数表示时,尝试用整数进行选择肯定是行不通的。
编辑以添加详细信息--我忘记了:即使是MySQL中的bigint也不足以表示您的ID。所以你需要确保并且总是使用字符串。
https://stackoverflow.com/questions/44909279
复制相似问题