MYSQL 爆炸搜索

标签 mysql sql

我有一个像这样构建的字段“1;2;3;4;8;9;11;”

如果我想搜索一个数字是否在这个范围内,我会这样做:

SELECT * FROM table WHERE [id] LIKE '[number];%' OR '%;[number];%'

还有其他更简单的方法可以拆分字符串吗?

非常感谢

最佳答案

如果您将值存储在字符串中,使用like 的最佳方式是:

SELECT *
FROM table
WHERE concat(';', @numbers) like concat('%;', [id], ';%')

当分隔符是逗号时,MySQL 还提供了 find_in_set():

SELECT *
FROM table
WHERE find_in_set(id, replace(@numers, ';', ',')

关于MYSQL 爆炸搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17136827/

相关文章:

mysql - 如何获取table1的所有列和table2的属于table1的所有行?

SQL:如何使用刚刚添加的列

MySQL 到 Postgres 数据迁移

php - 警告:mysqli_error()期望恰好有1个参数,在register.php文件中给出的0个参数

mysql - 使用子查询并具有 count(distinct) 条件的查询

sql - 如何摆脱这些子选择?

sql - 为什么要使用左连接

sql - 在 NZSQL 中使用 limit with union all 时出错

Android上传图片到Mysql

mysql - 如何使用 Talend 将 excel 数字日期值转换为适合存储在数据库表中的日期