找准目标,不断前行

MYSQL字符串中根据符号匹配固定字符

如果您有一个字段存储的是多个值,例如分号分隔的字符串,而您仍然需要进行精准匹配,可以使用 FIND_IN_SET 函数,但需要注意 FIND_IN_SET 是基于逗号分隔的字符串。如果您的字段是分号分隔的,可以先将其转换为逗号分隔的字符串。

假设 users 表的 roles 字段存储的是分号分隔的字符串

 

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255),
    roles VARCHAR(255)
);

INSERT INTO users (username, roles) VALUES ('user1', 'user;admin;moderator');
INSERT INTO users (username, roles) VALUES ('user2', 'user;moderator');
INSERT INTO users (username, roles) VALUES ('user3', 'admin;user');

  

查询示例

要检查 roles 字段中是否包含固定的字符串 "admin",可以使用以下查询:

SELECT *
FROM users
WHERE FIND_IN_SET('admin', REPLACE(roles, ';', ','));

  

执行上述查询将返回:

+----+----------+-----------------------+
| id | username | roles                 |
+----+----------+-----------------------+
|  1 | user1    | user;admin;moderator  |
|  3 | user3    | admin;user            |
+----+----------+-----------------------+

解释

  • REPLACE(roles, ';', ','):将分号 ; 替换为逗号 ,,以便 FIND_IN_SET 函数能够正确处理。
  • FIND_IN_SET('admin', ...):检查替换后的字符串中是否包含 "admin"

通过这种方式,您可以在MySQL中进行精准匹配,即使字段中存储的是分号分隔的字符串。

posted @ 2024-10-23 10:22  kevinZhuZhu  阅读(43)  评论(0编辑  收藏  举报