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

浙公网安备 33010602011771号