我在数据库中有以下条目:
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
我想从数据库“Page”中检索id,并根据汇总值检索表名“details”。我希望所有四个id(1,2,3,6)具有汇总值"numbers of word <any_number> in the doc <any_number>
并管理空间......
答案 0 :(得分:5)
如果您可以接受%
也与非数字匹配的权衡,那么使用LIKE
SQL运算符(这也是跨平台)这是微不足道的。
select * from details where lower(summary) LIKE 'numbers of word % in the doc %'
如果你只想匹配数字和空格,我认为你确实需要正则表达式,幸好在MySQL中直接支持。 MySQL 5.1 manual, section 12.5.2: Regular Expressions。像这样:
select * from details
where lower(summary) REGEXP '^numbers of word [0-9 ]+ in the doc [0-9x ]+$'
如果您不需要或希望不区分大小写,则可以取消对LOWER()
的调用。我在第二个正则表达式中包含x
,因为您的数字前缀为0x
(十六进制?)。
请记住,索引可能无法用于LIKE
或REGEXP
,这意味着查询会产生相对非常大的I / O成本。