mysql字符串拼凑

在实际开发中,我们时常拼凑字符串,当然我这里讲的都是与数据库有关的字符串拼凑。例如,有这样一个需求,鼠标移到用户上(超链接形式),显示这样的信息(用户名, Email ,注册时间,上次登录时间。。等等),我们可以利用 ajax 来实现动态加载数据。可以这样拼凑字符串,首先将这些字段全部读出来在代码里写拼凑语句;也可以在数据库里写 sql 拼凑,到时直接读取就可以了。下面以一个小例子,来了解 MySqL 的几个字符串拼凑函数。

首先,创建一个表,为了简单起见,表结构如下:

/*

SQLyog 企业版 - MySQL GUI v8.14

MySQL - 5.1.45-community

*********************************************************************

*/

/*!40101 SET NAMES utf8 */;

 

create table `users` (

       `id` double ,

       `user_id` varchar (60),

       `user_pwd` varchar (60),

       `user_email` varchar (60)

);

可以自己插入一些数据,如:

insert into `users` (`id`, `user_id`, `user_pwd`, `user_email`) values('1','alexis','1111','123@126.com');

insert into `users` (`id`, `user_id`, `user_pwd`, `user_email`) values('2','ab','1234','1234@msn.com');

 

拼凑字符串主要用到以下三个函数: CONCAT CONCAT_WS GROUP_CONCAT

CONCAT(str1 ,str2 ,...)                       

返回结果为连接参数产生的字符串。如有任何一个参数为 NULL ,则返回值为 NULL 。或许有一个或多个参数。 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col)

如: SELECT CONCAT(' 用户名: ',user_id,', 邮箱 ',user_email) FROM users

结果如下:

用户名: alexis, 邮箱 123@126.com

用户名: ab, 邮箱 1234@msn.com

 

CONCAT_WS(separator ,str1 ,str2 ,...)

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

如: SELECT CONCAT_WS(' || ',user_id,user_email) AS info FROM users

结果:

alexis || 123@126.com

ab || 1234@msn.com

GROUP_CONCAT(expr )

该函数返回带有来自一个组的连接的非 NULL 值的字符串结果。其完整的语法如下所示:  

GROUP_CONCAT([DISTINCT] expr [,expr ...]

             [ORDER BY {unsigned_integer | col_name | expr }

                 [ASC | DESC] [,col_name ...]]

             [SEPARATOR str_val ])

如: SELECT GROUP_CONCAT('*',user_id) FROM users

结果:

*alexis,*ab

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值