たとえば、長さmyTable
のフィールドmyField
を持つテーブル (Oracle) があります。CHAR
5
SQL devまたはその他のツールで直接以下のようなクエリを実行しようとすると
SELECT * FROM myTable WHERE myField = 'aa'
期待どおりにいくつかの結果が得られます((5に収まるように3つの末尾のスペースで埋められた)など'aa'
のいくつかのdbで埋められた値と比較していることに注意してください.'aa '
問題:
たとえば、JPA Hibernate を使用してそのようなクエリを実行しようとすると、比較する前に CHAR フィールドを使用しない限り、同じ結果が得られません (何もありません)。TRIM
SELECT * FROM myTable WHERE TRIM(myField) = 'aa'
また
次のようにパラメータをパディングします(ただし、これにはCHARの長さを事前に知る必要があります)
FROM myTable WHERE TRIM(myField) = 'aa '
質問:上記の 2 つしか選択肢はありませんか? 上記以外のオプションも大歓迎です。性能が良いのはどっち?ありがとう。