concat_ws函数(concat函数排序)

http://www.itjxue.com  2023-01-27 04:10  来源:未知  点击次数: 

mysql中字符串的拼接,能不能不使用concat函数

能使用。

MySQL concat函数可以连接一个或者多个字符串,如

select concat('10');

结果:10

select concat('11','22','33');

结果

112233

MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL

select concat('11','22',null);

结果

NULL

mysql中concat_ws()函数

使用函数CONCAT_WS()。语法为:CONCAT_WS(separator,str1,str2,…)

CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。但是CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。

所以使用concat_ws()函数可以拼接多个字符串为一个字符串(当某个字段为空字符串或null值时也能获取正确结果)。

如有不当之处欢迎指正谢谢。

SQL---CONCAT系列函数

MYSQL里的CONCAT函数用于将两个字符串连接起来,形成一个单一的字符串。

如下面的例子:

mysql?select?concat('11','22','33');

+------------------------+

|?concat('11','22','33')?|

+------------------------+

|?112233?|

+------------------------+

1?row?in?set?(0.00?sec)

MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL

mysql?select?concat('11','22',null);

+------------------------+

|?concat('11','22',null)?|

+------------------------+

|?NULL???|

+------------------------+

1?row?in?set?(0.00?sec)

MySQL中concat_ws函数

使用方法:

contcat_ws(separator,str1,str2,...)

contcat_ws()?代表?CONCAT?With?Separator?,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。

注意:

如果分隔符为?NULL,则结果为?NULL。函数会忽略任何分隔符参数后的?NULL?值。

如连接后以逗号分隔

mysql?select?concat_ws(',','11','22','33');

+-------------------------------+

|?concat_ws(',','11','22','33')?|

+-------------------------------+

|?11,22,33?|

+-------------------------------+

1?row?in?set?(0.00?sec)

和MySQL中concat函数不同的是,?concat_ws函数在执行的时候,不会因为NULL值而返回NULL?

mysql?select?concat_ws(',','11','22',NULL);

+-------------------------------+

|?concat_ws(',','11','22',NULL)?|

+-------------------------------+

|?11,22?|

+-------------------------------+

1?row?in?set?(0.00?sec)

HQL里的CONCAT函数大致用法更SQL的相同

我使用的常用形式为:

select a, b, concat_ws(',' , collect_set(cast(c as string)))

from table group by a,b;

上文HQL中collect_set?有两个作用,第一个是 去重 ,去除group by后的重复元素,

第二个是形成一个 集合 ,将group by后属于同一组的第三列集合起来成为一个集合。与contact_ws

结合使用就是将这些元素以逗号分隔形成字符串。当使用collect_list是则不会去重,它会将第三列的集合全部都列出来

cast? ,用法cast(value as type),将某个列的值显示的转化为某个类型,cast(age as string ) 将int类型的数据转化为了String类型。

concat和concat_ws

一、CONCAT()函数【 不同字段之间的连接 】

CONCAT()函数用于将多个字符串连接成一个字符串。

用法:CONCAT(str1,str2,…)?

1)返回结果为连接参数产生的字符串。

2)可以有一个或多个参数。

3)如有任何一个参数为NULL ,则返回值为 NULL。

二、CONCAT_WS()函数【 不同字段之间的连接 】

CONCAT_WS()可自定义连接符

用法:CONCAT_WS(separator,str1,str2,…)

1)第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。

2)分隔符可以是一个字符串,也可以是其它参数。

3)如果分隔符为 NULL,则结果为 NULL。

4)函数会忽略任何分隔符参数后的 NULL 值。但是CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。

三、GROUP_CONCAT()函数【 同一字段下各个值之间的连接 】

等价于CONCAT_WS(SEPARATOR?,collect_set(column)),但此时无法进行排序

hive - concat_ws 函数

? concat_ws 函数在连接字符串的时候,只要有一个字符串不是NULL,就不会返回NULL,concat_ws 函数需要指定分隔符。

hive select concat_ws('-','a','b');

a-b

hive select concat_ws('-','a','b',null);

a-b

hive select concat_ws('','a','b',null);

ab

MySQL中写存储过程用到连接字符串函数concat_ws()出错

简单的方法是你在存储过程中打印SQL,

set y_sql=concat_ws(' ','insert','into',tmp4data,'value','(',var1,var2,')');

select y_sql;

看看y_sql合并生什么, 其次在动态SQL过程中, 你定义的tmp4data到底是变量还是表的名称,如果是名称就需要添加分号

(责任编辑:IT教学网)

更多

推荐Frontpage教程文章