「char()」および「ascii()」関数の欠如をカバーするためのsqliteの回避策はありますか?
例えば:
char(97) => 'a'
ascii('a') => 97
私はこれが遅すぎることを知っていますが:
SELECT unicode('a') --ascii('a')
SELECT char(97) --char(97)
これが役立つことを願っています:)
この質問が書かれて以来、SQLiteは明らかにCHAR()
関数を追加しました:
SELECT CHAR(97) -- Result is 'a'
ただし、私が他の方向に最も近いのは、次のHEX()
関数です。
SELECT HEX('a') -- Result is 61 (hexadecimal, is equal to 97 decimal)
10 進ASCII
文字の値を取得するには、複雑な作業が必要なようです...
本当に必要な場合は、ASCIICHAR
列と列を含む値の「ASCIIテーブル」テーブルを作成しASCIICODE
、それにASCIIテーブルを入力することができると思います。次に、クエリ/サブクエリでルックアップを実行できます。
SELECT ASCIICHAR FROM ASCIITABLE WHERE ASCIICODE = 97;
しかし、実際には、Richard J. Ross IIIのコメントはお金に関するものです。SQLiteを使用している場合は、おそらく呼び出しコードを介してアクセスしているので、そこで計算を行うことはできませんか?
変換される可能性は低いですが、sqlite はこのクエリで ASCII を認識します。
select * from segments where substr(name, 1, 1) < 'A' or substr(name, 1, 1) > 'Z' and substr(name, 1, 1) < 'a';
可能な結果: 0-9 およびすべての ASCII < 'a'
変換を実行する sqlite3 ユーザー関数 ascii() および char() を C で、または sqlite3 ユーザー関数をサポートする別の言語ラッパー (たとえば python) を介して実装するのは簡単です。
http://www.sqlite.org/c3ref/create_function.html
https://docs.python.org/2/library/sqlite3.html
このサイトにある sqlite 拡張ライブラリに基づいて、独自のバージョンの ascii を実装できます: http://sqlite.1065341.n5.nabble.com/Extension-functions-for-SQLite-in-C-for-free- td18942.html
私はこのコードを修正して機能を追加しましたが、特にあなたのものではありません。それはかなり簡単なはずです。