欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL之FIND_IN_SET()的用法及說明

 更新時間:2023年01月06日 14:28:27   作者:秦風(fēng)?  
這篇文章主要介紹了MySQL之FIND_IN_SET()的用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

一、語法

FIND_IN_SET(str,strlist)
  • str:要查詢的字符串
  • strList:一個被,號分隔開的字符串
  • 函數(shù)是返回strList中str所在的位置索引

二、用法

  • SELECT FIND_IN_SET(‘e’, ‘a,b,c,d’); 結(jié)果是0
  • SELECT FIND_IN_SET(‘b’, ‘a,b,c,d’); 結(jié)果是2:因為b在strlist集合中放在2的位置,從1開始
  • SELECT FIND_IN_SET(‘c’, ‘a,b,c,d’); 結(jié)果是3

和in、like的區(qū)別

find_in_set(str,strlist)函數(shù)是用變量,strlist內(nèi)容是逗號分隔的字符串

  • in后面是要常量,表示一個個羅列,in(‘11’,‘12’,‘13’)
  • like是模糊匹配,find_in_set是精確匹配

三、用途

舉個例子一

當數(shù)據(jù)庫表中,存在有逗號拼接的字符串的字段時,查詢時候用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的記錄

舉個例子二

一張部門表中,有個userIds字段,存放的是關(guān)聯(lián)的部門下用戶的id;比如:‘111,112,113’。

然后需要查詢返回的結(jié)果是,Dept對象中帶有user的對象數(shù)組。

CREATE TABLE IF NOT EXISTS dept(
	`id` INT(11) NOT NULL auto_increment,
    `name` varchar(255) NOT NULL COMMENT '部門名字',
    `user_ids` text DEFAULT NULL COMMENT '部門人員',
     PRIMARY KEY  (`id`)
)ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '部門表';
<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" /> // 在實體類中有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é)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql LOAD語句批量錄入數(shù)據(jù)

    mysql LOAD語句批量錄入數(shù)據(jù)

    本章的前面討論如何使用SQL向一個表中插入數(shù)據(jù)。但是,如果你需要向一個表中添加許多條記錄,使用SQL語句輸入數(shù)據(jù)是很不方便的。
    2010-03-03
  • MySQL中的RAND()函數(shù)使用詳解

    MySQL中的RAND()函數(shù)使用詳解

    這篇文章主要介紹了MySQL中的RAND()函數(shù)使用詳解,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • 詳解Mysql數(shù)據(jù)庫date, datetime類型設(shè)置0000-00-00默認值(default)報錯問題

    詳解Mysql數(shù)據(jù)庫date, datetime類型設(shè)置0000-00-00默認值(default)報錯問題

    這篇文章主要介紹了詳解Mysql數(shù)據(jù)庫date, datetime類型設(shè)置0000-00-00默認值(default)報錯問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Mysql中調(diào)試存儲過程最簡單的方法

    Mysql中調(diào)試存儲過程最簡單的方法

    以前同事告訴我用臨時表插入變量數(shù)據(jù)來查看,但是這種方法過于麻煩,而且Mysql沒有比較好的調(diào)試存儲過程的工具。今天google了下發(fā)現(xiàn)可以用select + 變量名的方法來調(diào)試
    2021-06-06
  • mysql查詢上下級機構(gòu)的方法實例

    mysql查詢上下級機構(gòu)的方法實例

    大家應(yīng)該都知道表里有上下級機構(gòu)的,下面這篇文章主要給大家介紹了關(guān)于mysql查詢上下級機構(gòu)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • MySQL中表分區(qū)技術(shù)詳細解析

    MySQL中表分區(qū)技術(shù)詳細解析

    數(shù)據(jù)庫分區(qū)是一種物理數(shù)據(jù)庫設(shè)計技術(shù)。雖然分區(qū)技術(shù)可以實現(xiàn)很多效果,但其主要目的是為了在特定的SQL操作中減少數(shù)據(jù)讀寫的總量以縮減sql語句的響應(yīng)時間,同時對于應(yīng)用來說分區(qū)完全是透明的。
    2016-06-06
  • MySQL按天分組統(tǒng)計一定時間內(nèi)的數(shù)據(jù)實例(沒有數(shù)據(jù)補0)

    MySQL按天分組統(tǒng)計一定時間內(nèi)的數(shù)據(jù)實例(沒有數(shù)據(jù)補0)

    我們在用Mysql制作數(shù)據(jù)可視化圖表時候,經(jīng)常需要按照天對數(shù)據(jù)進行分組統(tǒng)計,下面這篇文章主要給大家介紹了關(guān)于MySQL按天分組統(tǒng)計一定時間內(nèi)的數(shù)據(jù),沒有數(shù)據(jù)補0的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 與MSSQL對比學(xué)習(xí)MYSQL的心得(八)--插入 更新 刪除

    與MSSQL對比學(xué)習(xí)MYSQL的心得(八)--插入 更新 刪除

    這一篇《與MSSQL對比學(xué)習(xí)MYSQL的心得(八)》將會講解MYSQL的插入、更新和刪除語句
    2014-08-08
  • mysql整數(shù)數(shù)據(jù)類型深入解析

    mysql整數(shù)數(shù)據(jù)類型深入解析

    本篇文章是對mysql中的整數(shù)數(shù)據(jù)類型進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL8.0高可用MIC的實現(xiàn)

    MySQL8.0高可用MIC的實現(xiàn)

    本文介紹了如何實現(xiàn)MySQL8.0高可用MIC,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10

最新評論