使用concat组合两列的问题

时间:2014-12-17 15:43:31

标签: sql sql-server

我在使用mssql

组合两列时遇到问题

表1格式:

|| WJCPrefix         || WJCNo ||

|| UK-R/SWJC/14/  || 1234  ||

|| UK-R/CUWJC/14/ || 2345  ||

|| UK-R/CUWJC/14/ || 3456  ||

|| UK-R/SWJC/14/  || 4567  ||

|| UK-R/CUWJC/14/ || 5678  ||

期望的是:

UK-R / CUWJC /3456分之14
UK-R / CUWJC / 14/5678

我正在使用的sql语句是:

SELECT tblWJCItem.AddedDescription, concat(tblWJC.WJCPrefix, tblWJC.WJCNo)  AS OurRef
FROM tblWJC
INNER JOIN tblWJCItem ON tblWJC.WJCID = tblWJCItem.WJCID;

我也用过:

SELECT tblWJCItem.AddedDescription, tblWJC.WJCPrefix + '' + tblWJC.WJCNo AS OurRef
FROM tblWJC
INNER JOIN tblWJCItem ON tblWJC.WJCID = tblWJCItem.WJCID;

我似乎无法连接这两个列,任何人都可以指出我在这里做错了什么?

由于

3 个答案:

答案 0 :(得分:0)

您的第一个查询应该没问题。但你可以试试:

SELECT tblWJCItem.AddedDescription, tblWJC.Prefix + cast(tblWJC.WJCNo as varchar(255)) AS OurRef
FROM tblWJC INNER JOIN
     tblWJCItem
     ON tblWJC.WJCID = tblWJCItem.WJCID;

如果WJCno是数字而不是字符串,则第二个版本可能会出错。

答案 1 :(得分:0)

如果您使用的是SQL Server 2012或更高版本,那么您的第一个查询(Concat()函数)应该可以正常工作。

对于其他版本,您可能需要Convert() / Cast() WJCNo为字符串类型

SELECT t2.AddedDescription, 
       t1.WJCPrefix + CONVERT(Varchar(10),t1.WJCNo) AS OurRef
FROM tblWJC t1
         INNER JOIN tblWJCItem t2 ON t1.WJCID = t2.WJCID;

答案 2 :(得分:0)

我认为WJCNo是数字或int字段所以首先将此字段转换为Varchar然后连接: -

SELECT tblWJCItem.AddedDescription, 
       tblWJC.WJCPrefix + '' + CONVERT(Varchar(10),tblWJC.WJCNo) AS OurRef
FROM tblWJC
INNER JOIN tblWJCItem ON tblWJC.WJCID = tblWJCItem.WJCID;