2011-10-28 5 views
1

私は一連の英数字コードと説明で構成されるSQLite DBを持っています。両方のフィールドはTEXTです。コーディング形式はアルファベット1文字とそれに続く2桁の数値です。これが親カテゴリです。多くの親カテゴリはサブアイテムを持っている - コードはその後、十進と英数字の値によって拡張された場合...そう:SQLite:連続した行に10進数のない英数字の項目を選択してください

A01は

A01.10は、サブアイテム

Iである親カテゴリですSELECTサブコードがないコード...このテーブルには80000のエントリがありますので、手動で処理するのは理想的ではありません)

したがって、コード[an]は次のようになります。 [n] [n]存在するAND [an] [n] [n]。%存在しません...任意のアイデア/ガイドが感謝します:)

TABLEは、「利用規約」と呼ばれ、Codeフィールドは想像文字列処理が正確にSQLiteのの強力なポイントではありませんCode

TIA

答えて

0

と呼ばれているが、私はあなたはそれが少しラウンド程度の方法で行われ得ると思います:

select * 
from terms 
where code not like '%.%' 
    and code not in (
    select rtrim(rtrim(code, '1234567890'), '.') 
    from terms 
    where code like '%.%' 
); 

考え方は、どのコードにサブアイテムがあるのか​​を最初に突き止めてから除外するというものです。

は、このデータを考える:

id | code 
1 | a01 
2 | a02 
3 | a03 
4 | a03.1 
5 | a03.2 
6 | a01.1 

はその後、そのクエリはあなたにこれを与える:

id | code 
2 | a02 
+0

素晴らしいです。ありがとう! – Mike