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を取得したい。合計値を持つ4つのID(1、2、3、6)すべてが必要"numbers of word <any_number> in the doc <any_number> で、スペースも使用して管理します...

4

1 に答える 1

5

%数字以外にも一致するトレードオフを受け入れることができる場合、これLIKEはクロスプラットフォームでもある SQL 演算子を使用して簡単です。

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()。数字の前に(16 進数?)xが付いているため、2 番目の正規表現に含めています。0x

LIKEインデックスは、またはでは使用できない可能性が高いことに注意してくださいREGEXP。これは、クエリで比較的大きな I/O コストが発生することを意味します。

于 2012-12-06T10:05:58.510 に答える