精华内容
下载资源
问答
  • 数据库concat函数

    2020-11-12 11:42:52
    concat 用法就是将数据库不同的字段串起来 比如要查询 name age sex 最终想出来的结果是连起来的 就可以用该函数 而不用再将结果拼接 eg:select id,concat(name,sex,age) as info from usr; 这样就会输出结果 ...

    因文件改动读到老大写的代码 发现该函数  所以记录一下

    concat  用法就是将数据库不同的字段串起来  比如要查询  name   age  sex  最终想出来的结果是连起来的

    就可以用该函数   而不用再将结果拼接

    eg:select id,concat(name,sex,age) as info from usr;  这样就会输出结果   info=>小明男12

    该函数中间可以拼接字符用来分割  

    eg:select id,concat(name,' ',sex,' ',age) as info from usr;  这样就会输出结果   info=>小明 男 12  中间有空格

     

    切记字符串中有null的字段  那输出结果就会是null

    展开全文
  • 最近一段时间都用到了Mysql数据库中的concat()函数,本来只是想查阅一下该函数的用法,发现跟他功能相似的还有另外两个函数,记录下来用作后期【查阅使用】。如下: 本文中使用的例子均在下面的数据库表tt2下执行: ...

    最近一段时间都用到了Mysql数据库中的concat()函数,本来只是想查阅一下该函数的用法,发现跟他功能相似的还有另外两个函数,记录下来用作后期【查阅使用】。如下:

    本文中使用的例子均在下面的数据库表tt2下执行:
    在这里插入图片描述

    一、concat()函数

    1、功能:将多个字符串连接成一个字符串。
    2、语法:concat(str1, str2,…)
    返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
    3、举例:
    例1:select concat (id, name, score) as info from tt2;

    在这里插入图片描述
    注意:中间有一行为null是因为tt2表中有一行的score值为null。

    例2:在例1的结果中三个字段id,name,score的组合没有分隔符,我们可以加一个逗号作为分隔符:

    在这里插入图片描述
    这样看上去似乎顺眼了许多~

    但是输入sql语句麻烦了许多,三个字段需要输入两次逗号,如果10个字段,要输入九次逗号…麻烦死了啦,有没有什么简便方法呢?——于是可以指定参数之间的分隔符的concat_ws()来了!

    二、concat_ws()函数

    1、功能:和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符~(concat_ws就是concat with separator)

    2、语法:concat_ws(separator, str1, str2, …)

    说明:第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。

    3、举例:

    例3:我们使用concat_ws()将 分隔符指定为逗号,达到与例2相同的效果:

    在这里插入图片描述
    例4:把分隔符指定为null,结果全部变成了null:

    在这里插入图片描述

    三、group_concat()函数

    前言:在有group by的查询语句中,select指定的字段要么就包含在group by语句的后面,作为分组的依据,要么就包含在聚合函数中。

    例5:

    在这里插入图片描述
    该例查询了name相同的的人中最小的id。如果我们要查询name相同的人的所有的id呢?

    当然我们可以这样查询:

    例6:

    在这里插入图片描述
    但是这样同一个名字出现多次,看上去非常不直观。有没有更直观的方法,既让每个名字都只出现一次,又能够显示所有的名字相同的人的id呢?使用函数group_concat()

    1、功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

    2、语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )

    说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。

    3、举例:

    例7:使用group_concat()和group by显示相同名字的人的id号:

    在这里插入图片描述
    例8:将上面的id号从大到小排序,且用’_'作为分隔符:

    在这里插入图片描述
    例9:上面的查询中显示了以name分组的每组中所有的id。接下来我们要查询以name分组的所有组的id和score:

    在这里插入图片描述

    展开全文
  • 修改数据库中group_concat的返回结果的长度限制 我们可以使用Mysql的客户端管理工具,Sqlyog 新建一个查询编辑器 显示 SHOW VARIABLES LIKE "group_concat_max_len"; 修改 SET GLOBAL group_concat_max_len =...

    sql语句1:

    SELECT t.`TeacherUserId` AS Tid,t.`UserName` ,t.`PhotoUrl`,t.`JoinDate`,t.`Remark`, u.`SubjectId`
    FROM `tb_ci_teacher` t INNER JOIN `tb_ci_subject_user` u
    ON t.`TeacherUserId`=u.`UserId`
    WHERE `TeacherUserId`='a7b096b7-02c6-4aaf-b469-b3bfcdc95854'

     

    image

    可以看到,subject 前面的数据都是重复的,而后面的subjectid 要是能合并在一起,该多好?

    使用 GROUP_CONCAT

    SELECT `TeacherUserId` AS Tid,`UserName` ,`PhotoUrl`,`JoinDate`,`Remark`,GROUP_CONCAT(`SubjectId` SEPARATOR ',') AS SubjectIds
    FROM `tb_ci_teacher` t INNER JOIN `tb_ci_subject_user` u
    ON t.`TeacherUserId`=u.`UserId`
    WHERE `TeacherUserId`='a7b096b7-02c6-4aaf-b469-b3bfcdc95854'

     

    image

    但是有几个地方是要注意的

    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 USING transcoding_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系统变量,你可以设置允许的最大长度。

    修改数据库中group_concat的返回结果的长度限制

    我们可以使用Mysql的客户端管理工具,Sqlyog 新建一个查询编辑器

    显示 SHOW VARIABLES LIKE "group_concat_max_len";

    修改 SET GLOBAL group_concat_max_len = 1024000; -- 关掉Mysql的Sqlyog客户端,生效

    转载于:https://www.cnblogs.com/joeylee/archive/2013/01/09/2852383.html

    展开全文
  • MySQL数据一个字段有多个结果【CONCAT用法——拼接多个结果到一个字段】 在MySQL中插入数据,有时候从一个数据库那数据到另一个数据库,需要将查询寻到的多个结果拼接到一个字段下,但是数据中又可能包含特殊符号,...

    MySQL数据一个字段有多个结果【CONCAT用法——拼接多个结果到一个字段】


    在MySQL中插入数据,有时候从一个数据库那数据到另一个数据库,需要将查询寻到的多个结果拼接到一个字段下,但是数据中又可能包含特殊符号,导致添加的时候添加语句CONCAT频繁报错,这时候就需要转译,但是C#转义符却在这个时候发愣了,这么多特殊符号,到底哪个才是我需要转移的呀,当让我们自己也很头大,小弟昨天做了一个concat添加含有特殊符号的转译,虽然不咋专业,但是能凑活用,各位大佬看着可能感觉有点麻烦,看到问题请提出来,让我一一改正,谢谢!

    话不多说,上代码(含注释)

    //在一个字段有多个值需要插入的时候才用这个方法哦,一个值的时候回略显麻烦呢
    //连接数据库
    string str="数据库连接字符串";
     MySqlConnection coon= new MySqlConnection(str);
     coon.Open();
     //查询出的字段有多个值
     string sql="查询语句";
                                MySqlDataAdapter data = new 
                                MySqlDataAdapter(sql, cocn);
                                DataSet ds= new DataSet();
                                data.Fill(ds);
                                //定义一个变量方便后期保存查询到的多个值拼接
                                string nparam = "";
                                //判断查询是否有数据
                                  if (ds.Tables[0].Rows.Count > 0)
                                {
                                //循环拿到多个值
                                    for (int k = 0; k < ds.Tables[0].Rows.Count; k++)
                                    {
                                    //判断是否包含特殊字符
                                        bool ssss = ds.Tables[0].Rows[k]["字段名"].ToString().Contains('特殊字符');
                                        if (ssss)
                                        {
                                           //如果包含特殊字符,按照特殊字符分割
                                            Array array1 = ds.Tables[0].Rows[k]["字段名"].ToString().Split('特殊字符');
                                            //定义一个变量,后面与拆分出来的字符串长度作对比
                                            int inti = 1;
                                            //定义一个变量保存含有特殊字符串的拼接数据
                                            string items = "";
                                            //取出分割的字符串
                                            foreach (var item in array1)
                                            {
                                            //如果不是最后一个,就需要转译特殊符号
                                                if (inti < array1.Length)
                                                {
                                                    items += item.ToString() + "\\" + '"';
                                                }
                                                //是最后一个直接等于分割的值本身
                                                else
                                                {
                                                    items += item.ToString();
                                                }
                                                inti++;
                                            }
                                            //拼接所有数据,如果是最后一个,最后就不需要加逗号
                                            if (k == ds.Tables[0].Rows.Count - 1)
                                            {
                                                nparam += '"' + items + '"' + ",CHAR(10)";
                                            }
                                            else
                                            {
                                                nparam += '"' + items + '"' + ",CHAR(10),";
                                            }
                                        }
                                        else
                                        {
                                        //这里是判断之后不包含特殊符号的拼接语句,原理与上相同
                                            if (k == ds.Tables[0].Rows.Count - 1)
                                            {
                                                string nparams = '"' + ds.Tables[0].Rows[k]["v"].ToString() + '"' + ",CHAR(10)";
                                                nparam += nparams;
                                            }
                                            else
                                            {
                                                string nparams = '"' + ds.Tables[0].Rows[k]["v"].ToString() + '"' + ",CHAR(10),";
                                                nparam += nparams;
                                            }
                                        }
                                    }
                                }
      //创建新的MySQL命令
      MySqlCommand cmd = coon.CreateCommand();
      //判断当接收拼接字符串的字符不为空的时候对数据进行添加
         if (nparam != "")
                                {
                                    cmd.CommandText = "UPDATE  表名  SET 字段名= CONCAT(" + nparam + ") WHERE ID =1(条件,你也不想全部数据都变成这个,对吧,哈哈)";
                                    cmd.ExecuteNonQuery();
                                }
    

    好了,到这里就添加成功了,虽然说是添加,倒不如说是修改,这就是添加进去的效果了字段设置为文本的时候的效果
    到这里就结束啦,如果有什么感觉的方法可以跟我一起探讨,谢谢!

    展开全文
  • 本文中使用的例子均在下面的数据库表tt2下执行: 一、concat()函数 1、功能:将多个字符串连接成一个字符串。 2、语法:concat(str1, str2,…) 返回结果为连接参数产生的字符串,如果有任何一个参数为null,则...
  • oracle10g以上版本提供行转列组合成字符串函数wmsys.wm_concat  例如有个users表如下:  id yhm xm  1 001 小唐  2 002 小李  3 003 小张  select wmsys.wm_concat(yhm) 用户名, wmsys.wm_concat(xm) 姓名 ...
  • MySQL教程之concat以及group_concat用法 参考手册 18-03-1915:12 本文中使用的例子均在下面的数据库表tt2下执行:   一、concat()函数 1、功能:将多个字符串连接成一个字符串。 2、语法:concat(str1...
  • 这个是我在网上百度的,他的用法跟我想要的效果类似,然后我就用在了我自己的Sql里面。 SELECT * FROM (SELECT a.*, (SELECT wm_concat (name) FROM V WHERE parentid = a.id) typename FROM T a) ...
  • Oracle数据库合并行记录,WMSYS.WM_CONCAT 函數的用法 博客分类:  Oracle   Sql代码  select t.rank, t.Name from t_menu_item t;     10 CLARK  10 KING  10 MILLER  20 ADAMS  20
  • 本文中使用的例子均在下面的数据库表tt2下执行: 一、concat()函数 1、功能:将多个字符串连接成一个字符串。 2、语法:concat(str1, str2,...) 返回结果为连接参数产生的字符串,如果有任何一个参数为null...
  • MySQL之concat以及group_concat用法

    千次阅读 2019-11-18 21:54:42
    本文中使用的例子均在下面的数据库表tt2下执行: 一、concat()函数 1、功能:将多个字符串连接成一个字符串。 2、语法:concat(str1, str2,...) 返回结果为连接参数产生的字符串,如果有任何一个参数为null...
  • mysql中group_concat函数用法和长度

    千次阅读 2018-09-14 14:31:52
    GROUP_CONCAT()是MySQL数据库提供的一个函数,通常跟GROUP BY一起使用,GROUP_CONCAT函数返回一个字符串结果,该结果由分组中的值连接组合而成,下面来看mysql中group_concat函数用法吧。 一、 语法 GROUP_...
  • wfr=spider&for=pc ...本文中使用的例子均在下面的数据库表tt2下执行: 一、concat()函数 1、功能:将多个字符串连接成一个字符串。 2、语法:concat(str1, str2,...) 返回结果为连...
  • wm_concat函数用法

    万次阅读 2017-11-24 16:18:33
    并以同一个ID关联的情况,比如常见的房产证权利人信息,因为共有权人可能有很多,不可能把所有的权利人都放到权利人表的权利人字段,把所有权利人的证件号都放到权利人证件号字段,所以在数据库设计时候,会采用一个...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 152
精华内容 60
关键字:

数据库concat用法