【问题标题】:Add string to result of MySQL Count query将字符串添加到 MySQL Count 查询的结果
【发布时间】:2016-05-07 19:24:19
【问题描述】:

我在数据库应用程序开发工具 Alpha Anywhere 中使用了一个 MySQL 查询。这是查询:

SELECT  Count(*)  AS Expr1  FROM timelines
WHERE CaseName = :whichcases  AND
Custodian = :whichcustodians  AND  
Device = :whichdevices

查询工作正常,但我需要在结果中添加一个字符串。例如,如果查询返回 352,133,我想将字符串“Total Records”添加到其中,最终结果为 352,133 Total Records

在发布此问题之前,我已尽可能彻底地搜索。我发现了很多相近的话题,但没有一个真正切中要害。

【问题讨论】:

    标签: mysql sql string select count


    【解决方案1】:

    我通常更喜欢在应用程序端做这样的事情,但如果你确实必须在查询中这样做,你可以使用concat 函数:

    SELECT CONCAT(COUNT(*), ' Total Records') AS Expr1 
    FROM   timelines 
    WHERE  CaseName = :whichcases AND 
           Custodian = :whichcustodians AND
           Device = :whichdevices
    

    【讨论】:

      【解决方案2】:

      立即进行这样的连接:

      SELECT concat(Count(*), ' total records') AS Expr1 
      FROM   ...
      

      将在 MySql 版本 fiddle) 中给出二进制结果。另请参阅concat 上的 5.5 文档:

      返回由连接参数产生的字符串。可能有一个或多个参数。如果所有参数都是非二进制字符串,则结果是非二进制字符串。如果参数包含任何二进制字符串,则结果为二进制字符串。一个数字参数被转换成它的等效字符串形式。从 MySQL 5.5.3 开始,这是一个非二进制字符串。 5.5.3之前是二进制字符串

      注意:小提琴显示二进制结果,但它在 MySql 5.6.21 上运行。因此,您可能还需要解决其他版本的问题。

      解决这个问题的一种方法是包装查询:

      SELECT concat(Expr1, ' total records') AS Expr1
      FROM   ( 
           SELECT Count(*) AS Expr1 
           FROM   timelines
           WHERE  CaseName = :whichcases
              AND Custodian = :whichcustodians
              AND Device = :whichdevices
      ) as sub
      

      或者你可以使用CAST:

      SELECT concat(cast(count(*) as char), ' total records') as Expr1
      FROM   timelines
      WHERE  CaseName = :whichcases
         AND Custodian = :whichcustodians
         AND Device = :whichdevices
      

      【讨论】:

      • 如果你使用 MySQL
      • 不客气。立即执行 concat 时的二进制返回值非常令人费解。 ;-)
      • @ChopOmatic,不要忘记接受您选择的答案——点击答案左侧的灰色复选标记。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      • 2017-12-15
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      相关资源
      最近更新 更多