如何在SQL Server 2005中连接两个字符串

37

我想把“dummy's”和“dock”这两个词拼接在一起。

我该如何在SQL Server 2005中进行拼接?它支持双引号吗?


1
你想要连接结果还是输入/变量?有任何本地化要求吗? - RobS
2
对于像这样的基础知识,我建议您查阅 SQL Server Books Online - http://technet.microsoft.com/en-us/library/ms130214.aspx - marc_s
6个回答

31

试试这个:

DECLARE @COMBINED_STRINGS AS VARCHAR(50); -- Allocate just enough length for the two strings.

SET @COMBINED_STRINGS = 'rupesh''s' + 'malviya';
SELECT @COMBINED_STRINGS; -- Print your combined strings.

或者您可以将字符串放入变量中,例如:

DECLARE @COMBINED_STRINGS AS VARCHAR(50),
        @STRING1 AS VARCHAR(20),
        @STRING2 AS VARCHAR(20);

SET @STRING1 = 'rupesh''s';
SET @STRING2 = 'malviya';
SET @COMBINED_STRINGS = @STRING1 + @STRING2;

SELECT @COMBINED_STRINGS; 

输出:

rupesh'smalviya

只需在您的字符串中添加一个空格作为分隔符即可。


@NoviceToDotNet,看起来额外的' '是一个转义序列,允许在最终字符串中使用'。 - nulltron

15

因此,如果您有一张包含以下行的表:

firstname lastname
Bill      smith

你可以像这样做:

select firstname + ' ' + lastname from thetable

而且你将会得到 "Bill Smith"


8

3

在2008年或之前连接两个字符串:

SELECT ISNULL(FirstName, '') + ' ' + ISNULL(SurName, '')

使用ISNULL是一个不错的选择,因为"String + NULL"运算会返回NULL。

还有一点需要注意:如果要连接字符串,应该使用CAST操作符。

SELECT 2 + 3 

会给予5个

SELECT '2' + '3'

将会给出23。


2
DECLARE @COMBINED_STRINGS AS VARCHAR(50),
        @STRING1 AS VARCHAR(20),
        @STRING2 AS VARCHAR(20);

SET @STRING1 = 'rupesh''s';
SET @STRING2 = 'malviya';
SET @COMBINED_STRINGS = @STRING1 + @STRING2;

SELECT @COMBINED_STRINGS;

SELECT '2' + '3';

我在一个名为TEST.sql的 SQL 文件中输入了以下内容,并运行它,得到如下输出:

+-------------------+
| @COMBINED_STRINGS |
+-------------------+
|                 0 |
+-------------------+
1 row in set (0.00 sec)

+-----------+
| '2' + '3' |
+-----------+
|         5 |
+-----------+
1 row in set (0.00 sec)

在进一步研究此问题后,我发现在SQL中进行字符串连接的最佳和可靠的方法是使用CONCAT方法。因此,我对同一文件进行了以下更改。

#DECLARE @COMBINED_STRINGS AS VARCHAR(50),
 #       @STRING1 AS VARCHAR(20),
 #       @STRING2 AS VARCHAR(20);

SET @STRING1 = 'rupesh''s';
SET @STRING2 = 'malviya';
#SET @COMBINED_STRINGS = @STRING1 + @STRING2;
SET @COMBINED_STRINGS = (SELECT CONCAT(@STRING1, @STRING2));

SELECT @COMBINED_STRINGS;

#SELECT '2' + '3';
SELECT CONCAT('2','3');

执行该文件后,输出如下。
+-------------------+
| @COMBINED_STRINGS |
+-------------------+
| rupesh'smalviya   |
+-------------------+
1 row in set (0.00 sec)

+-----------------+
| CONCAT('2','3') |
+-----------------+
| 23              |
+-----------------+
1 row in set (0.00 sec)

我正在使用的SQL版本是:14.14


OP明确指出了SQL Server 2005,虽然您的答案很优雅,但是CONCAT函数直到2012版本之后才被添加到SQL Server中 - 至少在2005年之后。因此,换句话说,CONCAT函数无法在OP运行的版本中使用。 - kiltannen

0

我有一个简单的解决方案,可以从数据库表中选择数据并使您轻松操作。

SELECT b.FirstName + b.LastName FROM tbl_Users b WHERE b.Id='11'

如果你尝试一下,就可以很容易地在那里添加一个空格。

SELECT b.FirstName +' '+ b.LastName FROM Users b WHERE b.Id='23'

在这里,您可以组合尽可能多的表格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接