zoukankan      html  css  js  c++  java
  • mysql字符串函数:FIND_IN_SET()使用方法详解

    语法:

    FIND_IN_SET(str,strlist)

    • 第一个参数str是要查找的字符串。
    • 第二个参数strlist是要搜索的逗号分隔的字符串列表。

    假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。

    一个字符串列表就是一个由一些被‘,’符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则 FIND_IN_SET() 函数被优化,使用比特计算。

    如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。

    案例:

    现在有一张users表,如下:

    iduser_nameemails
    1 小张 a@fujieace.com,b@fujieace.com,c@fujieace.com
    2 小王 aa@fujieace.com,bb@fujieace.com,cc@fujieace.com
    3 李四 aa@fujieace.com,b@fujieace.com,d@fujieace.com
    4 王五 aa@fujieace.com,e@fujieace.com,f@fujieace.com

    问:我们如何用sql查找所有“emails”字段中有“aa@fujieace.com”的用户?

    答:用以下sql即可实现;

     
    1. select * from users where FIND_IN_SET('aa@fujieace.com',emails);

    拓展知识:

     
    1. mysql> SELECT FIND_IN_SET('b','a,b,c,d');
    2. -> 2 

    因为:b 在strlist集合中放在2的位置,计算从1开始,不是从0开始;

     
    1. select FIND_IN_SET('1','1');

    返回值:就是1;

    这时候的strlist集合有点特殊,只有一个字符串,其实就是要求前一个字符串一定要在后一个字符串集合中才返回 大于0的数;

     
    1. select FIND_IN_SET('2','1,2');返回2
    2. select FIND_IN_SET('6','1'); 返回0

    注意事项:

     
    1. select * from fujieace where FIND_IN_SET(id,'1,2,3,4,5');

    使用find_in_set函数一次返回多条记录;

    id 是一个表的字段 然后每条记录分别是id等于1,2,3,4,5的时候;

    有点类似in (集合)

     
    1. select * from fujieace where id in (1,2,3,4,5);

    转载: https://www.fujieace.com/mysql/functions/find_in_set.html

  • 相关阅读:
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    206. Reverse Linked List
    205. Isomorphic Strings
    204. Count Primes
    203. Remove Linked List Elements
    201. Bitwise AND of Numbers Range
    199. Binary Tree Right Side View
    ArcGIS API for JavaScript 4.2学习笔记[8] 2D与3D视图同步
  • 原文地址:https://www.cnblogs.com/lxwphp/p/10968642.html
Copyright © 2011-2022 走看看