MySQL、SQL Server中字符串拼接

一.MySQL中字符串拼接

1.使用加号”+”实现

在Java、C#等编程语言中字符串的拼接可以通过加号“+”来实现,
在MySQL中也可以使用加号”+”来连接两个字符串。
例如:

SELECT '123'+'123' AS result1;
SELECT '123'+'abc' as result2;
SELECT 'abc'+'abc' as result3;

执行结果:

246
123
0

也就是说:MySQL会尝试将加号两端的字段值转换为数字类型,如果转换失败则为0,这样看来,加号”+”实际上不是进行字符串拼接,而是数字相加。
那么,如何才能进行字符串拼接呢?强大的MySQL提供了两个函数,CONCAT和CONCAT_WS。

2.CONCAT函数

CONCAT函数支持一个或者多个参数,参数类型可以为字符串类型,也可以是非字符串类型(对于非字符串类型,MySQL将尝试
将其转化为字符串类型),CONCAT函数会将所有参数按照参数的顺序拼接成一个字符串作为返回值。
例如:

SELECT CONCAT(123,123) AS result1;
SELECT CONCAT(123,'abc') AS result2;
SELECT CONCAT('abc','abc') AS result3;

执行结果:

123123
123abc
abcabc

3.CONCAT_WS函数

CONCAT_WS可以在待拼接的字符串之间加入指定的分隔符,它的第一个参数值为采用的分隔符,而剩下的参数则为待拼接的字符串值。
例如:

SELECT CONCAT_WS(':','abc','def') AS result1;
SELECT CONCAT_WS(',','abc','def') AS result2;
SELECT CONCAT_WS(' ','abc','def') AS result3;

执行结果:

abc:def
abc,def
abc def

4.GROUP_CONCAT函数

MySQL中除了普通的字符串拼接函数外,还提供了分组拼接函数。
例如,有表t_fruit(shop_id, fruit_name),表中数据如下:
shop_id fruit_name
1 桃子
1 梨子
2 香蕉
3 苹果
2 草莓
现在需要统计每个店铺经营的水果,就可以使用GROUP_CONCAT函数,如下:

select shop_id,GROUP_CONCAT(fruit_name) from t_fruit group by shop_id;

执行结果如下:
1 ‘桃子,梨子’
2 ‘香蕉,草莓’
1 ‘苹果’

二.SQL Server中字符串拼接

SQL Server没有提供字符串拼接函数,而是使用加号”+”来进行字符串拼接,但是需要注意的是,字符串与数字拼接时,一定要将数字类型通过CONVERT函数转化为字符串类型。

1、字符串与字符串的拼接

 select 'abc'+'def'

2、字符串与数字拼接

select 'id_'+convert(varchar(50),id) from tb_user

必须显示的将数字转化为字符串,否则SQL server会将前面的字符串隐式转化为整型,出现类型转换错误。

你可能感兴趣的:(数据库)