目前,我正在使用JS、DiscordJS和MySQL,并试图从表中获取一些数据,这些数据通常正常工作。但我很难使用MySQL SELECT查询,因为它不检查表中的值是否与正在搜索的值完全相同。与它正在寻找的那个不和谐的ID结束是不同的。
代码:
let query = `SELECT * FROM accounts WHERE DiscordID = ${interaction.member.id}`;
console.log(`QUERY: ` + query);
MySQL.Connect()
.then((connection) => {
MySQL.Query(connection, query)
.then((results) => {
if (results == '') {
console.log('[RESULTS = 0]');
console.log(results);
} else {
console.log('[RESULTS > 0]');
console.log(results);
}
})
.catch((error) => {
console.log(error);
})
.finally(() => {
connection.end();
});
})
.catch((error) => {
console.log(error);
});结果:
QUERY: SELECT * FROM accounts WHERE DiscordID = 466934561738326016
RESULT:
ID: 1,
Username: 'Test',
Password: 'Test',
DiscordID: '466934561738326022'MySQL模式:
CREATE TABLE IF NOT EXISTS `accounts` (
`ID` INT NOT NULL AUTO_INCREMENT,
`Username` VARCHAR(255) NOT NULL,
`Password` VARCHAR(255) NOT NULL,
`DiscordID` VARCHAR(100) NOT NULL,
PRIMARY KEY (`ID`));发布于 2022-02-22 00:06:44
你被MySQL的数字处理咬了。
你说过,
SELECT * FROM accounts WHERE DiscordID = 466934561738326016MySQL使用了这个长数字,并悄悄地将其转换为IEEE 754 64位浮点数,从而失去了精度。做SELECT 466934561738326016;会给你带来466934561738326000。这有时与错误的DiscordID相匹配。!!
如果您在ID周围放置引号,而不是这样做,MySQL将ID值保留为文本字符串。它起作用了。
SELECT * FROM accounts WHERE DiscordID = '466934561738326016'看看这里。小提琴
https://stackoverflow.com/questions/71214018
复制相似问题