4

インメモリ データベースを使用して SQL クエリを単体テストしようとしています。クエリは、MySQL 組み込み関数の 'hex' と 'unhex' を使用します (DB にバイナリ データを書き込むため)。これら 3 つの in-momery DB ソリューションのいずれも「hex」機能をサポートしていないことが判明したため、それらをテストすることはできません。

私の質問 - クエリで直接「hex」関数を使用する代わりに、16 進変換をコードに移動せずにクエリをテストする方法はありませんか?

ps。インメモリ DB が実際の db の動作を代表するものではないことはわかっていますが、クエリは非常に簡単です - 挿入と選択。

4

1 に答える 1

3

HSQLDB では、独自の関数を定義できます。実際の 16 進数または文字列の戻り値をテストしていない場合は、モック関数 HEX および UNHEX を作成して入力を返すことができます。例えば:

CREATE FUNCTION UNHEX(S VARCHAR(1000)) RETURNS VARCHAR(1000) 
 BEGIN ATOMIC
   RETURN S;
 END;

関数が実際に変換された値を返すようにする場合は、関数を拡張して変換を実行できます。この場合、組み込み関数を使用して ASCII コードと既存の静的 Java メソッドを抽出できます。

更新: バージョン 2.4.1 の HSQLDB に両方の関数のサポートが追加されました。

于 2018-03-03T10:26:24.863 に答える