数据库中字符串连接

让人想犯罪 __ 提交于 2020-02-01 00:54:39

数据库中字符串连接

参考资料:

一.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个'就是转义符。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!