您的位置:首页 > 数据库 > MySQL

关于mysql函数GROUP_CONCAT 需要注意的地方

2015-11-25 13:44 549 查看
原文链接:http://blog.sina.com.cn/s/blog_4e808acf01009qna.html

需要注意的:

a.int字段的连接陷阱

当你用group_concat的时候请注意,连接起来的字段如果是int型,一定要转换成char再拼起来,

否则在你执行后(ExecuteScalar或者其它任何执行SQL返回结果的方法)返回的将不是一个逗号隔开的串,

而是byte[]。

该问题当你在SQLyog等一些工具中是体现不出来的,所以很难发现。

select group_concat(ipaddress) from t_ip返回逗号隔开的串

select group_concat(id) from t_ip 返回byte[]

select group_concat(CAST(id as char)) from t_dep返回逗号隔开的串

select group_concat(Convert(id , char)) from t_dep返回逗号隔开的串

附Cast,convert的用法:

CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USINGtranscoding_name)

CAST() 和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。

这个类型 可以是以下值其中的 一个:

BINARY[(N)]

CHAR[(N)]

DATE

DATETIME

DECIMAL

SIGNED [INTEGER]

TIME

UNSIGNED [INTEGER]

b.长度陷阱

用了group_concat后,select里如果使用了limit是不起作用的.

用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。

使用group_concat_max_len系统变量,你可以设置允许的最大长度。

程序中进行这项操作的语法如下,其中 val是一个无符号整数:

SET [SESSION | GLOBAL] group_concat_max_len = val;

若已经设置了最大长度,则结果被截至这个最大长度。

在SQLyog中执行 SET GLOBAL group_concat_max_len = 10后,重新打开SQLyog,设置就会生效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 函数