数据库中字符串连接
参考资料:
一.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 ‘香蕉,草莓’
3 ‘苹果’
二.SQL Server中字符串拼接
SQL Server没有提供字符串拼接函数,而是使用加号”+”来进行字符串拼接,但是需要注意的是,字符串与数字拼接时,一定要将数字类型通过CONVERT函数转化为字符串类型。
1、字符串与字符串的拼接
select 'abc'+'def';
2、字符串与数字拼接
select 'id_'+convert(varchar(50),id) from tb_user
必须显式的将数字转化为字符串,否则SQL server会将前面的字符串隐式转化为整型,出现类型转换错误。
SQLite 连接两个字符串
SQLite中,连接字符串不是使用+
,而是使用||
示例:
SELECT 'I''M '||'Chinese.'
将输出 I'M Chinese.
特别说明:
1、SELECT 'I''M '+'Chinese.'
将输出0。
SQLite会尝试将加号两端的字段值转换为数字类型,如果转换失败则为0。
2、默认情况下, '
是字符串的边界符, 如果在字符串中包含'
, 则必须使用两个'
, 第1个'
就是转义符。
来源:CSDN
作者:Fighting_No1
链接:https://blog.csdn.net/Fighting_No1/article/details/103881702