4

ファイル名を含むテーブル列があります: image1.jpg、image12.png、script.php、.htaccess、...

ファイル拡張子のみを選択する必要があります。私はそのようにしたいと思います:

SELECT DISTINCT SUBSTR(column,INSTR('.',column)+1) FROM table

ただし、私のバージョンの SQLite では INSTR はサポートされていません。

INSTR関数を使わずに実現する方法はありますか?

4

2 に答える 2

8

以下は、ファイル拡張子のみを選択するためのクエリ (テストおよび検証済み) です。ファイル名には任意の数の.文字を含めることができます-それでも機能します

table_name から個別の replace(column_name, rtrim(column_name, replace(column_name, '.', '' ) ), '') を選択します。

column_nameファイル名がある列の名前です(ファイル名には複数.の 'sを含めることができます

table_nameあなたのテーブルの名前です

于 2014-11-11T11:15:22.807 に答える
6

ltrim(X, Y)関数を試してみてください、それはドキュメントが言うことです:

ltrim(X,Y) 関数は、Y に現れるすべての文字を X の左側から削除して形成された文字列を返します。

次のように、すべてのアルファベットを 2 番目の引数としてリストします。

SELECT ltrim(column, "abcd...xyz1234567890") From T

までのすべての文字を左から削除する必要があり.ます。ドットなしの拡張子が必要な場合は、その上で使用SUBSTRしてください。もちろん、これは、ファイル名に複数のドットを含めることはできないことを意味します。

しかし、クエリを実行するコードで拡張子を抽出する方が簡単で安全だと思います。

于 2013-02-16T11:20:27.737 に答える