2013-07-31 64 views
0

如何连接两个字段和两者之间的文本?我已经尝试了所有的以下和没有奏效...用文本连接两个SQL字段

([fldCode1] || ':' ||[fldCode2]) AS Method 

([fldCode1] + ':' + [fldCode2]) AS Method 

([fldCode1] & ':' & [fldCode2]) AS Method 
               *** & cannot be used with varchar 
+0

对于中例如简单,什么是“没有奏效”启动呢?另外两个*应该失败,因为你借用了其他语言的连接语法(PHP和VB我猜)。 –

回答

5

这应该工作

select [fldCode1] + ':' + [fldCode2] 
from tab 

,或者如果列是数字

select cast([fldCode1] as varchar(100)) + ':' + cast([fldCode2] as varchar(100)) 
from tab 
+0

请[no varchar without length](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx)。 –

+0

@Parado。 。 。指定'varchar'时,应始终包含长度。虽然'cast'和'convert'的默认值是可以的,但在其他情况下默认值是不同的(并且很麻烦)。 –

+0

@戈登即使在这里,如果任何一列包含> 30个字符,默认值可能就不会确定... –

3

的第一个和最后形式是无效的,但第二个肯定没问题,假设列是字符串。如果列是数字,日期等。你需要将其先转换:

SELECT Method = CONVERT(VARCHAR(255), fldCode1) 
     + ':' + CONVERT(VARCHAR(255), fldCode2) 
FROM ... 

如果他们串及以下不工作:

SELECT Method = fldCode1 + ':' + fldCode2 FROM ... 

然后,你需要更好地界定什么“不起作用”的意思是......

2

作为方法选择CONCAT('fldCode1',':','fldCode2');

+1

不,'CONCAT'仅适用于SQL Server 2012. –

+0

适用于MySQL 5.5 – AdRock

0

从2008年开始SQL SERVER 2008(不要忘记使用ISNULL函数,否则你的结果将为空),如果你尝试concattenate空列。

SELECT ISNULL('myFirstString', '') + ' ' + ISNULL('mySecondString', '') 

您还可以设置CONCAT_NULL_YIELDS_NULL为关闭这种方式,如果你不希望使用ISNULL功能,因此这将工作。

SET CONCAT_NULL_YIELDS_NULL OFF 
SELECT 'myFirstString' + ' ' + 'mySecondString' 

与SQL Server 2012就这么

SELECT CONCAT ('Happy ', 'Birthday ', 11, '/', '25')