gpt4 book ai didi

mysql - 为什么我的 PREPAREed 语句为所有行提供相同的 sha1 值?

转载 作者:行者123 更新时间:2023-11-29 19:14:46 25 4
gpt4 key购买 nike

将小指浸入准备好的 SQL 中。MySQL 5.6.23 InnoDB到目前为止我有这个

PREPARE stmt1 FROM @stmt;
select @stmt, @key1, @feed_id;
-- result is like this
-- stmt = "select sha1(concat('{',? ,'}',?)) sha1, id from mytable"
-- key1 = "'location=',Location,'term=',Term"
-- feed_id = 10
EXECUTE stmt1 USING @key1, @feed_id;

这给了我一个结果,但每个结果行的第一列(sha1)是相同的值。这是不正确的!

如果我自己进行替换并运行命令,我会得到我所期望的结果(每行的 sha1 都有不同的值)

这是一个按我预期工作的示例语句

select sha1(concat('{','location=',Location,'term=',Term ,'}',1129)) sha1,
id
from My_table

让我思考 volatile 函数,但这不是 MySQL 中的事情,不是吗?

我使用动态 SQL,因为 key1 和表名都可以计算,并且我有数千个需要处理。

有人知道发生了什么或可以尝试一些事情吗?

最佳答案

我通过使用所有值创建语句字符串,然后发出 PREPARE 然后 EXECUTE 不需要任何参数来解决这个问题。有效。但我需要为每次执行重新准备语句。这很草率,但足以满足我的需求。

该语句现在如下所示:

SET @stmt2 = CONCAT("select sha1(concat('{',", @key1," ,'}',", @feed_id, ")) sha1, ts_id from ",@table_name);
PREPARE stmt3 FROM @stmt2;
EXECUTE stmt3;

关于mysql - 为什么我的 PREPAREed 语句为所有行提供相同的 sha1 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42801120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com