当然我这里讲的都是与数据库有关的字符串拼凑
在實際開發中,我們時常拼湊字符串,當然我這里講的都是與數據庫有關的字符串拼湊。例如,有這樣一個需求,鼠標移到用戶上(超鏈接形式),顯示這樣的信息(用戶名,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
總結
以上是生活随笔為你收集整理的当然我这里讲的都是与数据库有关的字符串拼凑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sqlserver中无ldf文件附加数据
- 下一篇: 一个词法分析器源码的剖析