6

SQliteでアルファ文字以外の文字で始まるすべての列を取得しようとしていますが、機能していないようです。私は現在このコードを持っていますが、それはすべての行を返します:

SELECT * FROM TestTable WHERE TestNames NOT LIKE '[A-z]%'

TestNamesの最初の文字がアルファベットの一部ではないすべての行を取得する方法はありますか?

4

3 に答える 3

8

最初のキャラだけ行くの?

select * from TestTable WHERE substr(TestNames,1) NOT LIKE '%[^a-zA-Z]%'

substr 関数 (一部の SQL 言語では left() として呼び出すこともできます) は、文字列の最初の文字を分離するのに役立ちます。

編集: sqllite の substr(TestNames,1,1) かもしれませんが、構文をテストする準備が整ったインスタンスがありません。

追加した:

select * from TestTable WHERE Upper(substr(TestNames,1,1)) NOT in ('A','B','C','D','E',....)

最適とは思えませんが、機能的には機能します。SQLlite で一連の文字を実行するためにどのような char コマンドがあるかわかりません。

「upper」を使用して作成したため、not in ステートメントで小文字を使用する必要はありません... SQLlite がそれが何であるかを知っていることを願っています。

于 2012-06-25T20:10:15.850 に答える
0

試す

SELECT * FROM TestTable WHERE TestNames NOT LIKE '[^a-zA-Z]%'
于 2012-06-25T20:07:37.567 に答える
0

SELECT * FROM NC_CRIT_ATTACH WHERE substring(FILENAME,1,1) NOT LIKE '[Az]%'; A)最初の列のみからすべてのデータを取得してから、それをスキャンします。B) この列にインデックスを付けない限り、全表スキャンのままです。

于 2012-06-25T20:37:03.647 に答える