【问题标题】:MySQL concat result of two selectsMySQL concat 两次选择的结果
【发布时间】:2017-08-10 06:02:08
【问题描述】:

我在 MySQL 中使用以下查询,将两个表中的一个字段相加成一个数字:

SELECT 
(SELECT sum(number)
FROM table1 
WHERE mydate IS NOT NULL) +
(SELECT sum(number)
FROM table2 
WHERE mydate IS NOT NULL)
AS sumOfTheTwo

这工作正常,sumOfTheTwo 给了我正确的结果。

问题是,我想将此数字作为货币输出。 通常我会使用以下内容:

concat("$", format(sumOfTheTwo, 2))

我不知道在这种情况下我会怎么做。 有人可以提出任何建议吗?

谢谢!

编辑/解决方案:

如:Oto Shavadze 所示,以下解决了这个问题:

SELECT concat("$", format( 

(SELECT sum(number)
FROM table1 
WHERE mydate IS NOT NULL) +
(SELECT sum(number)
FROM table2 
WHERE mydate IS NOT NULL)

, 2)) as res

【问题讨论】:

    标签: mysql sql database concat


    【解决方案1】:
    SELECT concat("$", format( 
    
        (SELECT sum(number)
        FROM table1 
        WHERE mydate IS NOT NULL) +
        (SELECT sum(number)
        FROM table2 
        WHERE mydate IS NOT NULL)
    
    , 2)) as res
    

    【讨论】:

      【解决方案2】:

      查看 MySQL string format functions。尤其是FORMAT()CONCAT()CONCAT_WS()

      FORMAT 可让您将字符串转换为数字,而CONCAT 将用于附加货币符号。

      【讨论】:

        【解决方案3】:

        你必须在第一个区块中 Concat 我尝试这个并为我工作:

        SELECT 
        
         concat("$", format(
            (
            -- block 1
            (SELECT sum(number)
            FROM table1 
            WHERE mydate IS NOT NULL) +
            -- block 2
            (SELECT sum(number)
            FROM table2 
            WHERE mydate IS NOT NULL)
        
             ), 2))
        
        AS sumOfTheTwo ;
        

        就这么简单。

        【讨论】:

          【解决方案4】:

          只需在当前查询中使用concat()

          SELECT 
          concat('$', (SELECT sum(number)
          FROM table1 
          WHERE mydate IS NOT NULL) +
          (SELECT sum(number)
          FROM table2 
          WHERE mydate IS NOT NULL))
          AS sumOfTheTwo
          

          请注意,在应用程序逻辑中执行此格式化可能比在 sql 中更有效。

          【讨论】:

            【解决方案5】:
            SELECT CONCAT('$',((SELECT sum(number)
            FROM table1 
            WHERE mydate IS NOT NULL) +
            (SELECT sum(number)
             FROM table2 
             WHERE mydate IS NOT NULL)));
            

            【讨论】:

            • 虽然这可能会回答问题,但也请添加简短说明您的代码做了什么以及为什么它解决了最初的问题。
            【解决方案6】:

            在 sql server 我有一个例子:

             SELECT 
             '$'+
            cast((SELECT 1) + (SELECT 2) as varchar(50)) AS sumOfTheTwo  
            

            【讨论】:

              【解决方案7】:

              使用concate() 和第一个select 并使用format() 在小数点后添加零个数(.)。 formate() 中的 2 表示小数点后 2 零。

              select concat("$", format(
              (SELECT sum(number) FROM table1 WHERE mydate IS NOT NULL) + 
              (SELECT sum(number) FROM table1 WHERE mydate IS NOT NULL), 2)) 
              as sumOfTheTwo`
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2016-06-09
                • 2014-10-13
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-08-10
                • 2011-02-27
                • 1970-01-01
                相关资源
                最近更新 更多