3

我在数据库中有以下条目:

id       summary
1       numbers of word 200 in the doc 0x123
2       [main] numbers of word 150 in the doc 0x678
3       numbers of word 678 in the doc 0x4536 
4       this file has empty
5       not completed
6       numbers of word 86542 in the doc 0x6356 

我想从数据库“页面”和表名“详细信息”中检索关于汇总值的 id。我想要所有四个具有汇总值的 id (1,2,3,6)"numbers of word <any_number> in the doc <any_number> 并使用空格进行管理...

4

1 回答 1

5

如果您可以接受%也匹配非数字的权衡,那么使用LIKESQL 运算符是微不足道的,它也是跨平台的。

select * from details where lower(summary) LIKE 'numbers of word % in the doc %'

如果您只想匹配数字和空格,我认为您确实需要正则表达式,幸好 MySQL 直接支持。MySQL 5.1 手册,第 12.5.2 节:正则表达式。像这样的东西:

select * from details
where lower(summary) REGEXP '^numbers of word [0-9 ]+ in the doc [0-9x ]+$'

如果您不需要或不希望不区分大小写,则可以取消对LOWER(). 我包含x在第二个正则表达式中,因为您的数字以0x(十六进制?)为前缀。

请记住,索引可能无法使用,LIKE或者REGEXP这意味着查询将产生相对非常大的 I/O 成本。

于 2012-12-06T10:05:58.510 回答