1、將傳遞過來的值進(jìn)行分割
成都創(chuàng)新互聯(lián)公司于2013年開始,先為屏山等服務(wù)建站,屏山等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為屏山企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
用,分割成數(shù)組
例如:$var=explode(",",$str);
2、循環(huán)數(shù)組
3、在循環(huán)內(nèi)查詢sql
查詢時候
有兩種方法
按照sql語法或者PHP語法
sql
用
find_in_set(str1,str2);
php
用
strpos(str1,str2,start);
具體語法格式自己搜索一下吧。
mysql查詢含逗號的數(shù)據(jù),將逗號拆分為多行展示:
原始數(shù)據(jù)如下:
現(xiàn)在因為新的需求,需要將這些數(shù)據(jù)轉(zhuǎn)化為如下形式:
假設(shè)我們需要處理的表結(jié)構(gòu)為:
使用如下sql語句即可實現(xiàn)需求:
查詢的主要思路為,原表與一個包含連續(xù)自增長字段的表進(jìn)行join,得到字符串分隔后的索引值,其中 length( a.name ) - length( REPLACE ( a.name, ',', '' ) ) + 1 語句獲得字符串逗號分隔之后得到的數(shù)據(jù)長度,兩表關(guān)聯(lián)之后,會得到相應(yīng)行數(shù)的數(shù)據(jù)。比如,
在join之后會得到:
之后對查詢中的結(jié)果,使用substring_index方法進(jìn)行截取,然后得到我們自己想要的數(shù)據(jù)。
1、將傳遞過來的值進(jìn)行分割 用,分割成數(shù)組
例如:$var=explode(",",$str);
2、循環(huán)數(shù)組
3、在循環(huán)內(nèi)查詢sql
查詢時候 有兩種方法 按照sql語法或者PHP語法
sql 用 find_in_set(str1,str2);
php 用 strpos(str1,str2,start);
具體語法格式自己搜索一下吧。
?
首先我們建立一張帶有逗號分隔的字符串。
CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),pname VARCHAR(20) NOT NULL,pnum VARCHAR(50) NOT NULL);
然后插入帶有逗號分隔的測試數(shù)據(jù)
INSERT INTO test(pname,pnum) VALUES('產(chǎn)品1','1,2,4');
INSERT INTO test(pname,pnum) VALUES('產(chǎn)品2','2,4,7');
INSERT INTO test(pname,pnum) VALUES('產(chǎn)品3','3,4');
INSERT INTO test(pname,pnum) VALUES('產(chǎn)品4','1,7,8,9');
INSERT INTO test(pname,pnum) VALUES('產(chǎn)品5','33,4');
查找pnum字段中包含3或者9的記錄
mysql SELECT * FROM test WHERE find_in_set('3',pnum) OR find_in_set('9',pnum);
+----+-------+---------+
| id | pname | pnum |
+----+-------+---------+
| 3 | 產(chǎn)品3 | 3,4 |
| 4 | 產(chǎn)品4 | 1,7,8,9 |
+----+-------+---------+
2 rows in set (0.03 sec)
使用正則
mysql SELECT * FROM test WHERE pnum REGEXP '(3|9)';
+----+-------+---------+
| id | pname | pnum |
+----+-------+---------+
| 3 | 產(chǎn)品3 | 3,4 |
| 4 | 產(chǎn)品4 | 1,7,8,9 |
| 5 | 產(chǎn)品5 | 33,4 |
+----+-------+---------+
3 rows in set (0.02 sec)
這樣會產(chǎn)生多條記錄,比如33也被查找出來了,不過MYSQL還可以使用正則,挺有意思的
find_in_set()函數(shù)返回的所在的位置,如果不存在就返回0
mysql SELECT find_in_set('e','h,e,l,l,o');
+------------------------------+
| find_in_set('e','h,e,l,l,o') |
+------------------------------+
| 2 |
+------------------------------+
1 row in set (0.00 sec)
還可以用來排序,如下;
mysql SELECT * FROM TEST WHERE id in(4,2,3);
+----+-------+---------+
| id | pname | pnum |
+----+-------+---------+
| 2 | 產(chǎn)品2 | 2,4,7 |
| 3 | 產(chǎn)品3 | 3,4 |
| 4 | 產(chǎn)品4 | 1,7,8,9 |
+----+-------+---------+
3 rows in set (0.03 sec)
如果想要按照ID為4,2,3這樣排序呢?
mysql SELECT * FROM TEST WHERE id in(4,2,3) ORDER BY find_in_set(id,'4,2,3');
+----+-------+---------+
| id | pname | pnum |
+----+-------+---------+
| 4 | 產(chǎn)品4 | 1,7,8,9 |
| 2 | 產(chǎn)品2 | 2,4,7 |
| 3 | 產(chǎn)品3 | 3,4 |
+----+-------+---------+
3 rows in set (0.03 sec)
MYSQL列中的數(shù)據(jù)查詢命令:
SELECT *
FROM?task_detatils
WHERE FIND_IN_SET( ‘1’, responsible_user)
命令的含義:將含有1的responsible_user列數(shù)據(jù)全部搜索出來。
采用的是find函數(shù):查找一定范圍內(nèi)元素的個數(shù)。查找[first,last)范圍內(nèi),與toval等價的第一個元素,返回一個迭代器。如果沒有這個元素,將返回last。
擴(kuò)展資料:
其他的查詢命令:
在命令后鍵入搜索的模式,再鍵入要搜索的文件。其中,文件名列表中也可以使用特殊字符,如“*”等,用來生成文件名列表。
如果想在搜索的模式中包含有空格的字符串,可以用單引號把要搜索的模式括起來,用來表明搜索的模式是由包含空格的字符串組成。
否則,Shell將把空格認(rèn)為是命令行參數(shù)的定界符,而grep命令將把搜索模式中的單詞解釋為文件名列表中的一部分。在下面的例子中,grep命令在文件example中搜索模式“text file”。
用戶可以在命令行上用Shell特殊字符來生成將要搜索的文件名列表。在下面的例子中,特殊字符“*”用來生成一個文件名列表,該列表包含當(dāng)前目錄下所有的文件。該命令將搜索出當(dāng)前目錄下所有文件中與模式匹配的行。
參考資料來源:百度百科-Linux文件內(nèi)容查詢命令
參考資料來源:百度百科-find函數(shù)
分享題目:mysql逗號分隔怎么寫 mysql逗號隔開拆成多條數(shù)據(jù)
標(biāo)題鏈接:http://muchs.cn/article40/hjsiho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、云服務(wù)器、外貿(mào)建站、建站公司、虛擬主機(jī)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)