gpt4 book ai didi

MySQL 查询像正常的 SELECT 一样工作,但在 CREATE TABLE AS 中不工作......?

转载 作者:行者123 更新时间:2023-11-30 22:15:34 25 4
gpt4 key购买 nike

我想弄清楚为什么这个查询 SELECT 很好,但我不能用它来创建一个临时表...... IF = '', 0 东西没有曾经存在于原始查询中,所以我添加了它以确保我没有尝试对可能为空字符串的任何内容求和,但它并没有解决问题。此选择有效并返回正确的结果集:

SELECT 
SUM(((IF(reserve_transactions.Revenue = '',
0,
reserve_transactions.Revenue) * IF(reserve_transactions.Confidence = '',
0,
reserve_transactions.Confidence)) / 100)) AS rawadjusted
FROM
(store_locations
LEFT JOIN reserve_transactions ON ((store_locations.ID = location_sales)))
GROUP BY store_locations.Loc_Long

但这不是:

CREATE TEMPORARY TABLE tmptable_which_doesnt_work AS SELECT 
SUM(((IF(reserve_transactions.Revenue = '',
0,
reserve_transactions.Revenue) * IF(reserve_transactions.Confidence = '',
0,
reserve_transactions.Confidence)) / 100)) AS rawadjusted
FROM
(store_locations
LEFT JOIN reserve_transactions ON ((store_locations.ID = location_sales)))
GROUP BY store_locations.Loc_Long

错误是:错误代码:1292。截断不正确的 DECIMAL 值:''

实际上,我还有其他情况相同的问题。有时与其他截断的不正确类型。我在这里缺少什么?

最佳答案

我认为问题可能出在数据和仅选择数字条目的逻辑上 - 您可以尝试定义一个函数,如下所示:

CREATE FUNCTION IsNumeric (sIn varchar(1024)) 
RETURNS tinyint
RETURN sIn REGEXP '^(-|\\+){0,1}([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+|[0-9]+)$';

并将其应用于两个参数的 where 子句,最终删除不必要的空格(根据 How do I check to see if a value is an integer in MySQL? )

关于MySQL 查询像正常的 SELECT 一样工作,但在 CREATE TABLE AS 中不工作......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38417576/

25 4 0