8

「char()」および「ascii()」関数の欠如をカバーするためのsqliteの回避策はありますか?

例えば:

char(97) => 'a'
ascii('a') => 97
4

7 に答える 7

14

私はこれが遅すぎることを知っていますが:

SELECT unicode('a') --ascii('a')
SELECT char(97)     --char(97)

これが役立つことを願っています:)

于 2017-05-09T15:22:10.080 に答える
3

この質問が書かれて以来、SQLiteは明らかにCHAR()関数を追加しました:

SELECT CHAR(97) -- Result is 'a'

ただし、私が他の方向に最も近いのは、次のHEX()関数です。

SELECT HEX('a') -- Result is 61 (hexadecimal, is equal to 97 decimal)

10 進ASCII文字の値を取得するには、複雑な作業が必要なようです...

于 2015-07-31T18:52:40.527 に答える
2

本当に必要な場合は、ASCIICHAR列と列を含む値の「ASCIIテーブル」テーブルを作成しASCIICODE、それにASCIIテーブルを入力することができると思います。次に、クエリ/サブクエリでルックアップを実行できます。

SELECT ASCIICHAR FROM ASCIITABLE WHERE ASCIICODE = 97;

しかし、実際には、Richard J. Ross IIIのコメントはお金に関するものです。SQLiteを使用している場合は、おそらく呼び出しコードを介してアクセスしているので、そこで計算を行うことはできませんか?

于 2012-07-23T01:01:17.880 に答える
0

変換される可能性は低いですが、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'

于 2014-05-09T00:36:55.560 に答える
0

変換を実行する sqlite3 ユーザー関数 ascii() および char() を C で、または sqlite3 ユーザー関数をサポートする別の言語ラッパー (たとえば python) を介して実装するのは簡単です。

http://www.sqlite.org/c3ref/create_function.html
https://docs.python.org/2/library/sqlite3.html

于 2014-07-22T18:29:11.447 に答える
0

このサイトにある sqlite 拡張ライブラリに基づいて、独自のバージョンの ascii を実装できます: http://sqlite.1065341.n5.nabble.com/Extension-functions-for-SQLite-in-C-for-free- td18942.html

私はこのコードを修正して機能を追加しましたが、特にあなたのものではありません。それはかなり簡単なはずです。

于 2015-07-21T21:36:39.867 に答える