rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » C/C++

MySQL的几个实用字符串函数

CREATE TABLE `es_run_service` (
`s_id` int(10) unsigned NOT NULL auto_increment,
`xq_id` int(10) unsigned NOT NULL,
`sm_id` int(10) unsigned NOT NULL,
`sm_pid` int(10) unsigned NOT NULL,
`sm_name` varchar(60) NOT NULL,
`serve_info` varchar(255) NOT NULL,
`is_delete` tinyint(4) unsigned NOT NULL default '0',
`add_time` int(10) unsigned NOT NULL default '0',
`update_time` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`s_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=118 ;

mysql group_concat()可用来行转列

完整的语法如下
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

以id分组,把name字段的值打印在一行,逗号分隔(默认)
select xq_id,group_concat(sm_name) from es_run_service group by xq_id

以id分组,把name字段的值打印在一行,分号分隔
select xq_id,group_concat(sm_name separator ';') from es_run_service group by xq_id

以id分组,把去冗余的name字段的值打印在一行,逗号分隔
select xq_id,group_concat(distinct sm_name) from es_run_service group by xq_id

以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序
select xq_id,group_concat(distinct sm_name order by sm_name desc) from es_run_service group by xq_id

//===========================================================================
repeat()函数,用来复制字符串,如下'ab'表示要复制的字符串,2表示复制的份数
select repeat('abc',3); repeat('abc',3)
abcabcabc

select repeat('c',3); repeat('c',3)
ccc
//===========================================================================

concat()函数
MySQL的concat函数可以连接一个或者多个字符串,如
mysql> select concat('10'); concat('10')
10

mysql> select concat('11','22','33'); concat('11','22','33')
112233

而Oracle的concat函数只能连接两个字符串
SQL> select concat('11','22') from dual

MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL
mysql> select concat('11','22',null); concat('11','22',null)
NULL

而Oracle的concat函数连接的时候,只要有一个字符串不是NULL,就不会返回NULL
SQL> select concat('11',NULL) from dual;
       CONCAT        11

concat_ws()函数, 表示concat with separator,即有分隔符的字符串连接

如连接后以逗号分隔
        mysql> select concat_ws(',','11','22','33'); concat_ws(',','11','22','33')
11,22,33

和concat不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL
mysql> select concat_ws(',','11','22',NULL); concat_ws(',','11','22',NULL)
11,22

顶一下
(0)
踩一下
(0)