Mysql 如何在字符串列中查找缺少的数字

Mysql 如何在字符串列中查找缺少的数字,mysql,sql,Mysql,Sql,我试图在一个相当大的SQL数据集中查找未解释的数字,并且在排序方面遇到了一些困难。 默认情况下,列读取的数据 '手册1:手册2:手册3:…手册1:手册: 其中k代表唯一id有资格获得的手册数量。 现在问题出现了,因为小册子中包含了更新后的数据样本 'Brochure1: 00001 Brochure2: 00002 Brochure3: 00003....' 如果在数字范围内,比如说00001-88888,一些数字没有在宣传册旁边记录,如何查询缺失的数字:正确的方法: 您应该更改数据库的结构

我试图在一个相当大的SQL数据集中查找未解释的数字,并且在排序方面遇到了一些困难。 默认情况下,列读取的数据

'手册1:手册2:手册3:…手册1:手册:

其中k代表唯一id有资格获得的手册数量。 现在问题出现了,因为小册子中包含了更新后的数据样本

'Brochure1: 00001 Brochure2: 00002 Brochure3: 00003....' 
如果在数字范围内,比如说00001-88888,一些数字没有在宣传册旁边记录,如何查询缺失的数字:

正确的方法: 您应该更改数据库的结构。如果您关心性能,那么应该遵循关系数据库的良好实践,正如您问题下的第一条评论所说:规范化。与其将手册信息放在表的一列中,不如创建另一个表来描述手册和第一个表名之间的关系,这是一个更快、更清晰的解决方案


给你一个词正常化。。您不想编写一个SQL数字生成器,您可以将其加入到:字符上拆分字符串。。可能还有另一个SQL数字生成器来查找某个范围内缺少的数字。格式是否总是类似于手册1:00001手册后面的字符串是填充后缀,或者两个数字可以不同?你到底在寻找什么?每行必须有88888份宣传册,但有些宣传册的数量较少,您想识别它们吗?
<your-first-table-name>_id    | brochure_id
----------------------------+---------------
1                           | 00002
1                           | 00038
1                           | 00281
2                           | 28192
2                           | 00293
...                         | ...
// Let's assume you already have your `brochures` column value in variable $brochures

$bs = str_replace(": ", ":", $brochures);
$bs = explode(" ", $bs);
$brochures = array();
foreach($bs as $b)
    $brochures[substr($b, 8, 1)] = substr($b, strpos($b, ":")+1, 5);

// Now you have $brochures array with keys representing the brochure number, 
// and values representing the ID of brochure.

if(isset($brochures['3'])){
    // that row has a defined Brochure3
}else{
    // ...
}