7

フォームで与えられた数値データがありますINTEGER。私はそれを他のデータと一緒に SQLite に挿入しますが、それを書き出すとき、数値は先頭にゼロが付いたINTEGER8 桁の数値である必要があります。Hex

元。

入力

400 
800 
25 
76

出力

00000190 
00000320 
00000019 
0000004C

もともとは、読み込んで変換して、TEXTこのように保存していました。

stringstream temp;
temp << right << setw(8) << setfill('0') << hex << uppercase << VALUE;

しかし、人生は決して簡単ではなく、今ではINTEGERnot の形式で 2 番目の出力を作成する必要がありますHEXINTEGER数値をSQLiteに変換する方法はありますHEXか?HEXINTEGERS

クエリ結果を取得してファイルに出力するいくつかの修道院エクスポート関数を作成したため、SQLite にあるデータを変更するために C++ を使用することは避けたいと思います。クエリが返される間にデータに触れる必要がある場合、それらを使用できませんでした。

SQLiteの関数を見てきましたが、HEX()望ましい結果が得られませんでした。関数を作成できますか、それとも非常に非効率的でしょうか? 私はこれを非常に大きなデータセットで行っているので、高価なものは避けるべきです。

注: Visual Studio 2010 で SQLites C/C++ インターフェイスを使用しています。

4

3 に答える 3

2

使用できますsqlite3_create_functionを見る

于 2014-04-07T14:03:09.647 に答える
1

私の好きな答えではありませんが、INTEGER値である列をテーブルに追加することにしました。

誰かがこれを行うためのより良い方法を見つけた場合、私はすべての耳です。

編集:

この回答を実装し、プログラムへの影響を確認した後、これは、実行時の負荷をあまり増やさずにデータを取得するための非常に優れた方法のようです。この回答はデータベースのサイズを少し増やしますが、クエリ内の別の列を取得するだけなので、SQLiteから値を取得するために追加の処理は必要ありません。

また、私は最初にこれらの値を持っていたので、この回答は、プログラムの早い段階で値を取得するために後で処理するテーブルにそれらを追加することで、大幅なコスト削減を実現しました。

于 2013-01-12T03:56:26.437 に答える