【问题标题】:How to force the numeric variable type in MySQL to use DECIMAL(23,0) instead of DECIMAL (65,30)?如何强制MySQL中的数字变量类型使用DECIMAL(23,0)而不是DECIMAL(65,30)?
【发布时间】:2022-12-13 21:49:27
【问题描述】:

我试图在 MySQL 查询中使用一个变量来获得 2 个总和之间的差异。

这是简化版:

SELECT 
    @foo := SUM(t.data LIKE '%foo%') AS FOO,
    @bar := SUM(t.data LIKE '%bar%') AS BAR,
    @diff := @query - @location AS DIFF
FROM MyTable t GROUP BY groupId

我遇到的问题是DIFF 列的类型是DECIMAL(270,30)。当尝试从应用程序中将其读取为 int 时,这会导致出现问题。
FOOBAR 都是DECIMAL(23,0)

我如何强制DIFFFOOBAR为同一类型?

【问题讨论】:

  • 您是否尝试过使用CAST
  • 感谢您的提示!有用。

标签: mysql sql mariadb


【解决方案1】:

根据@mark-rotteveel 的建议,CAST 可用于更改结果类型。

在这种情况下:

SELECT 
    @foo := SUM(t.data LIKE '%foo%') AS FOO,
    @bar := SUM(t.data LIKE '%bar%') AS BAR,
    CAST(@query - @location, DECIMAL(23,0)) AS DIFF
FROM MyTable t GROUP BY groupId

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多