mysql - MySQL 中截断不正确的 DOUBLE 错误

标签 mysql

我写了一个简单的mysql程序如下:

DELIMITER $$ 
create procedure trialdbjs.spDeleteEmployees(in IDs nvarchar(1000))
Begin
    Delete from employees_js Where ID IN (IDs);
end$$

它适用于 ID 的单个值,但是当我使用逗号分隔值调用该过程时,例如:'2,4'

例如:
调用 Trialdbjs.spDeleteEmployees('2,4');

这将返回错误:截断不正确的 DOUBLE 值:'2,4'

希望你能帮助我!

提前致谢

最佳答案

您不能以这种方式编写存储过程。问题出在IN。它将 '2,4' 视为字符串值,然后尝试将其转换为数字(因为 id 是一个数字)。

这是解决此问题的一种方法:

delimiter $$ 
create procedure trialdbjs.spDeleteEmployees(
    in in_IDs nvarchar(1000)
)
Begin
    Delete from employees_js Where find_in_set(id, in_IDs) > 0;
end$$

还有其他方法可以解决这个问题(动态 SQL 会更快,因为它可以利用索引)。

关于mysql - MySQL 中截断不正确的 DOUBLE 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43696355/

相关文章:

android - 发现多个文件具有独立于操作系统的路径 'com/mysql/jdbc/configs/maxPerformance.properties'

php - 我的 SQL 查询在获取数据时使用异常

MySQL 查询 40,000 行 v/s 一次加载和 for 循环

php - MySQL 查询问题 - INSERT INTO

mysql - "Delete"每行中的€符号并保留其余部分

java - Netbeans 无法建立与 jdbc 的连接

php - MySQL INSERT...SELECT 仅适用于一列

mysql - 仅与另一个表中的最新记录连接:- Remove replication

php - 如何从 mysql 值/内容禁用 jQuery Datepicker

mysql - 根据 ‘clock ins’ 和 ‘clock outs’ 查找特定时间段内没有工作的员工