Mysql字符串字段判斷是否包含某個(gè)字符串的2種方法

字號(hào):


    假設(shè)有個(gè)表:
    代碼如下:
    CREATE TABLE users(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),user_name VARCHAR(20) NOT NULL,emails VARCHAR(50) NOT NULL);
    初始化表,并添加些記錄。
    代碼如下:
    truncate table users
    INSERT INTO users(user_name, emails) VALUES('小張','a@email.com,b@email.com,c@email.com');
    INSERT INTO users(user_name, emails) VALUES('小王','aa@email.com,bb@email.com,cc@email.com');
    Mysql 中有些字段是字符串類型的,如何查找其中包含某些字符的記錄呢?
    方法一:
    代碼如下:
    SELECT * FROM users WHERE emails like "";
    這樣的用戶也查出來(lái)了,不符合預(yù)期。
    方法二:
    利用mysql 字符串函數(shù) find_in_set();
    代碼如下:
    SELECT * FROM users WHERE find_in_set(, emails);
    這樣是可以的,怎么理解呢?
    mysql有很多字符串函數(shù) find_in_set(str1,str2)函數(shù)是返回str2中str1所在的位置索引,str2必須以","分割開(kāi)。
    e.g.
    代碼如下:
    mysql > SELECT find_in_set()('b','a,a,b,c,d') as test;
    ->