0

私はJavaでパターンマッチングコードを持っています。これはデータベースからパターンを取得します。mysqlデータベースでJUnitを実行していたとき、すべてがかなりクールになりました。

Original Pattern in database 
[a-zA-Z]{1}[0-9]{2}[a-zA-Z]{3}[0-9]{5}_[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{6}\\.csv
Mysql is retruning as expected and as it's stored.
Oracle is returning with extra backslashes 
[a-zA-Z]{1}[0-9]{2}[a-zA-Z]{3}[0-9]{5}_[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{6}\\\\.csv

なぜそれが異なって戻ってくるのか。データをフェッチするためにHibernateを使用しています。

4

1 に答える 1

1

MySQL では\文字列のエスケープ文字ですが、Oracle ではそうではありません。つまり、この挿入はそれぞれに対して異なる動作をすることを意味します:

INSERT INTO PATTERNS (ID, VALUE) VALUES (1, '\\\\');

それは\\MySQLに挿入されますが\\\\、Oracleに挿入されます。Oracleのみ\\に挿入する場合は、挿入を次のように変更する必要があります。

INSERT INTO PATTERNS (ID, VALUE) VALUES (1, '\\');
于 2012-12-14T09:16:31.000 に答える