【问题标题】:SQL: How to combine two columns with punctuation?SQL:如何将两列与标点符号结合起来?
【发布时间】:2016-03-18 15:10:57
【问题描述】:

我想使用 SQL 语句将两列合并为一列并用“/”分隔

目前,我只能这样做。

Select A.Marks, Q.NoOfAnsBox FROM AnswerTable AS A INNER JOIN QuestionTable AS 
Q WHERE A.QuestionID = Q.QuestionID

输出:

Marks NoOfAnsBox    
3     5    
2     5

请问是否可以将其输出为一列,如下所示?

Marks    
3/5    
2/5

我尝试将整数转换为字符串并执行连接,但未能获得所需的结果

Select (CONVERT(A.Marks, Char(50)) + '/' + Convert(Q.NoOfAnsBox,Char(50))) As     
Marks FROM AnswerTable AS A INNER JOIN QuestionTable AS Q WHERE A.QuestionID = 
Q.QuestionID


Marks    
8    
7

【问题讨论】:

    标签: mysql sql concatenation


    【解决方案1】:

    在 Mysql 中使用 CONCAT() 函数来连接字符串,因为 + 在这里的行为与其他 RDBMS 不同:

    Select CONCAT(A.Marks, '/', Q.NoOfAnsBox) As Marks 
    FROM AnswerTable AS A 
        INNER JOIN QuestionTable AS Q ON A.QuestionID = Q.QuestionID
    

    还可以考虑将“WHERE”更改为“ON”。在您的情况下,它们是同义词,但是如果您将INNER 连接换成LEFT OUTER 连接并忘记使用WHERE 子句,事情可能会变得丑陋。

    【讨论】:

    • 另外,如果你想编写可移植的 SQL,ANSI SQL 语法需要ON 子句。
    【解决方案2】:
    Select CONCAT(A.Marks, '/', Q.NoOfAnsBox) AS Marks FROM AnswerTable AS A INNER JOIN QuestionTable AS 
    Q WHERE A.QuestionID = Q.QuestionID
    

    【讨论】:

      【解决方案3】:

      使用Concat()函数如下

       Select CONCAT(A.Marks, '/', Q.NoOfAnsBox) AS Marks 
       FROM AnswerTable AS A INNER JOIN QuestionTable AS Q 
       WHERE A.QuestionID = Q.QuestionID
      

      【讨论】:

        猜你喜欢
        • 2019-11-18
        • 2021-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-02
        • 2011-12-10
        • 2021-09-05
        相关资源
        最近更新 更多