I have been testing H2 and for some reason same strings with trailing spaces are considered different. For Example:
select CASE WHEN 'testing'='testing ' THEN 'SAME' ELSE 'DIFFERENT' END
H2 returns 'DIFFERENT' on that query, MSSQL does not, which it seems to be the right way. Looking for info on how this should work I found this from the MSSQL Server:
SQL Server follows the ANSI/ISO SQL-92 specification (Section 8.2,
<Comparison Predicate>, General rules #3) on how to compare
strings with spaces. The ANSI standard requires padding for the
character strings used in comparisons so that their lengths match before
comparing them. The padding directly affects the semantics of WHERE and
HAVING clause predicates and other Transact-SQL string comparisons. For
example, Transact-SQL considers the strings 'abc' and 'abc ' to be equivalent for most comparison operations.
The
only exception to this rule is the LIKE predicate. When the right side
of a LIKE predicate expression features a value with a trailing space,
SQL Server does not pad the two values to the same length before the
comparison occurs. Because the purpose of the LIKE predicate, by
definition, is to facilitate pattern searches rather than simple string
equality tests, this does not violate the section of the ANSI SQL-92
specification mentioned earlier.
So maybe there is a setting I'm missing?
JDBC URL: jdbc:h2:tcp://localhost/.\mydatabase