gpt4 book ai didi

MySQL 不将字符串转换为 int,尽管进行了转换

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

所以我想做的是从日期中减去周数,很简单,对吧?

但是,查询返回的字符串我相信,因为无论我如何尝试对其进行排序,它仍然按以下顺序排序:0、1、10、11、12、... 19、2、21

当然我用谷歌搜索过,我已经尝试过 CAST AS SIGNED/UNSIGNED/INT/DECIMAL。我确实尝试格式化它,乘以一,将结果加零 - 没有任何反应。

我在 BIRT 中使用我的查询 - 因为我已经设法在 BIRT 表中对其进行排序,它仍然在 Workbench 和 BIRT 图表中困惑 - 这让它们看起来像胡说八道。

现在,当我写这篇文章时,我发现问题是我在那里有 CASE:

SELECT CASE WHEN 2 = 1 THEN SUBSTR(mydate, 1, 7) ELSE CAST(WEEK(mydate, 0) AS SIGNED) END AS 'data' FROM mytable

仍然:为什么 CAST 在与可能返回字符串的 CASE 一起出现时不起作用?我想有条件地让用户选择数据是按 YYYY-MM(年和月)还是按周分组,现在看来我有点卡住了。

最佳答案

自从 week() 以来,该转换 (CAST(WEEK(mydate, 0) AS SIGNED)) 在我看来是不必要的函数返回 INT 中的周数。因此,您可能可以将 week() 的结果转换为 varchar,因为 substring 将导致 varchar

CASE WHEN 2 = 1 THEN SUBSTR(mydate, 1, 7) ELSE CAST(WEEK(mydate, 0) AS CHAR(100)) END AS data 
FROM mytable

关于MySQL 不将字符串转换为 int,尽管进行了转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41060529/

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