2011-12-20 50 views
0

Iが期間によって接合異なる長さの文字列の数を含むSQLiteのテーブル*の値、このようなものがあります。私は(このケースでは)第3の期間を抽出したい特定の文字/文字列のSQLite文字列の値の位置を特定する方法は?

SomeApp.SomeNameSpace.InterestingString.NotInteresting 
SomeApp.OtherNameSpace.WantThisOne.ReallyQuiteDull 
SomeApp.OtherNameSpace.WantThisOne.AlsoDull 
SomeApp.DifferentNameSpace.AlwaysWorthALook.LittleValue 

を私は明らかに私はプログラム的にこのにいくつかの方法を行うことができます

SELECT interesting_string, COUNT(*) 
FROM (SELECT third_part_of_period_delimited_string(name) interesting_string) 
GROUP BY interesting_string; 

ような何かを書くことができ、サブストリング-delimited。私はSQLiteのSELECTクエリでこれを達成するための方法があるのだろうか?誰もがすることができます好奇心

答えて

1

だ場合は、言及し、データベースからそれらを選択した後の文字列では動作として

*それは、SharpDevelopのプロファイラデータベースです。または、それらを格納するときに別々の列に分割することもできます。

データを格納しているコードにアクセスできない場合は、データを完全に読み込み、文字列を分割し、分割されたトークンを新しいテーブルの別々の列に格納することを検討してください。データが大きすぎない場合は、この表を新しいメモリー・データベースに保管して、優れたパフォーマンスを得ることができます。

これは価値があるかどうかは、データ列を分割する1回のパスを何度も使用できるかどうかによって異なります。データが絶えず変化している場合、このスキームはおそらくうまく機能しません。

+0

私はデータを作成しませんが、残念ながらそれを消費します。既知の部分文字列の場合、私は醜い構文を使用することができます。 'CASE WHEN LIKE()THEN" "' ...しかし、私は何かを逃したと思っていました。ホーハム。 –

関連する問題