MySQL之FIND_IN_SET()的用法及說(shuō)明
一、語(yǔ)法
FIND_IN_SET(str,strlist)
str
:要查詢的字符串strList
:一個(gè)被,
號(hào)分隔開(kāi)的字符串- 函數(shù)是返回strList中str所在的位置索引
二、用法
SELECT FIND_IN_SET(‘e’, ‘a,b,c,d’);
結(jié)果是0SELECT FIND_IN_SET(‘b’, ‘a,b,c,d’);
結(jié)果是2:因?yàn)閎在strlist集合中放在2的位置,從1開(kāi)始SELECT FIND_IN_SET(‘c’, ‘a,b,c,d’);
結(jié)果是3
和in、like的區(qū)別
find_in_set(str,strlist)函數(shù)是用變量,strlist內(nèi)容是逗號(hào)分隔的字符串
in
后面是要常量,表示一個(gè)個(gè)羅列,in(‘11’,‘12’,‘13’)like
是模糊匹配,find_in_set是精確匹配
三、用途
舉個(gè)例子一
當(dāng)數(shù)據(jù)庫(kù)表中,存在有逗號(hào)拼接的字符串的字段時(shí),查詢時(shí)候用FIND_IN_SET函數(shù)。
# 創(chuàng)建表 CREATE TABLE IF NOT EXISTS tb_test1( `id` INT(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL COMMENT '名字', `type` varchar(255) NOT NULL COMMENT '類型: 1表示金卡;2表示銀卡;3表示銅卡', PRIMARY KEY (`id`) )ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = 'FIND_IN_SET使用'; # 新增數(shù)據(jù) INSERT INTO tb_test1(name,type) VALUES('edg','1,2,3'); INSERT INTO tb_test1(name,type) VALUES('rng','2,3'); INSERT INTO tb_test1(name,type) VALUES('ig','1,3'); # 查詢 SELECT * FROM tb_test1 WHERE FIND_IN_SET('1',type); # 返回type中包含1的記錄
舉個(gè)例子二
一張部門(mén)表中,有個(gè)userIds字段,存放的是關(guān)聯(lián)的部門(mén)下用戶的id;比如:‘111,112,113’。
然后需要查詢返回的結(jié)果是,Dept對(duì)象中帶有user的對(duì)象數(shù)組。
CREATE TABLE IF NOT EXISTS dept( `id` INT(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL COMMENT '部門(mén)名字', `user_ids` text DEFAULT NULL COMMENT '部門(mén)人員', PRIMARY KEY (`id`) )ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '部門(mén)表';
<resultMap id="ResultMap" type="com.test.entity.dept" > <id column="id" property="id" jdbcType="INTEGER" /> <result column="name" property="name" jdbcType="VARCHAR" /> <result column="user_ids" property="userIds" jdbcType="VARCHAR" /> <association property="Users" resultMap="Usesr_map" /> // 在實(shí)體類中有List<User> Users </resultMap> <sql id="User_Column_List" > user.id user_id, user.name user_name </sql> <resultMap id="Usesr_map" type="com.test.entity.User"> <id column="user_id" property="id" jdbcType="INTEGER" /> <result column="user_name" property="name" jdbcType="VARCHAR" /> </resultMap> <!-- 只返回user_ids中包含的id的user記錄 --> <select id="selectOne" resultMap="ResultMap" parameterType="INTEGER" > SELECT e.id id,e.name name,e.user_ids user_ids, <include refid="User_Column_List"/> FROM dept e LEFT JOIN User user ON FIND_IN_SET(user.id,e.user_ids) WHERE e.id = #{e.id} </select>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- MySQL的FIND_IN_SET函數(shù)使用方法分享
- Mysql中的find_in_set的使用方法介紹
- Mysql中FIND_IN_SET()和IN區(qū)別簡(jiǎn)析
- mysql通過(guò)find_in_set()函數(shù)實(shí)現(xiàn)where in()順序排序
- MySQL中find_in_set()函數(shù)用法示例詳解
- Mysql中find_in_set()函數(shù)用法詳解以及使用場(chǎng)景
- mysql查詢FIND_IN_SET?REGEXP實(shí)踐示例
- MySQL中的FIND_IN_SET函數(shù)的使用場(chǎng)景
- mysql中find_in_set()函數(shù)用法及自定義增強(qiáng)函數(shù)詳解
- Mysql中FIND_IN_SET函數(shù)的使用及問(wèn)題
- MySQL FIND_IN_SET函數(shù)的使用場(chǎng)景
相關(guān)文章
mysql LOAD語(yǔ)句批量錄入數(shù)據(jù)
本章的前面討論如何使用SQL向一個(gè)表中插入數(shù)據(jù)。但是,如果你需要向一個(gè)表中添加許多條記錄,使用SQL語(yǔ)句輸入數(shù)據(jù)是很不方便的。2010-03-03詳解Mysql數(shù)據(jù)庫(kù)date, datetime類型設(shè)置0000-00-00默認(rèn)值(default)報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了詳解Mysql數(shù)據(jù)庫(kù)date, datetime類型設(shè)置0000-00-00默認(rèn)值(default)報(bào)錯(cuò)問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Mysql中調(diào)試存儲(chǔ)過(guò)程最簡(jiǎn)單的方法
以前同事告訴我用臨時(shí)表插入變量數(shù)據(jù)來(lái)查看,但是這種方法過(guò)于麻煩,而且Mysql沒(méi)有比較好的調(diào)試存儲(chǔ)過(guò)程的工具。今天google了下發(fā)現(xiàn)可以用select + 變量名的方法來(lái)調(diào)試2021-06-06mysql查詢上下級(jí)機(jī)構(gòu)的方法實(shí)例
大家應(yīng)該都知道表里有上下級(jí)機(jī)構(gòu)的,下面這篇文章主要給大家介紹了關(guān)于mysql查詢上下級(jí)機(jī)構(gòu)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04MySQL按天分組統(tǒng)計(jì)一定時(shí)間內(nèi)的數(shù)據(jù)實(shí)例(沒(méi)有數(shù)據(jù)補(bǔ)0)
我們?cè)谟肕ysql制作數(shù)據(jù)可視化圖表時(shí)候,經(jīng)常需要按照天對(duì)數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì),下面這篇文章主要給大家介紹了關(guān)于MySQL按天分組統(tǒng)計(jì)一定時(shí)間內(nèi)的數(shù)據(jù),沒(méi)有數(shù)據(jù)補(bǔ)0的相關(guān)資料,需要的朋友可以參考下2023-03-03與MSSQL對(duì)比學(xué)習(xí)MYSQL的心得(八)--插入 更新 刪除
這一篇《與MSSQL對(duì)比學(xué)習(xí)MYSQL的心得(八)》將會(huì)講解MYSQL的插入、更新和刪除語(yǔ)句2014-08-08