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中进行精准匹配,即使字段中存储的是分号分隔的字符串。