0

上のステートメントでラップされた varchar 列で 2 つのテーブルを結合する場合、両方の varchar 値に末尾のスペースがあると結合が機能しません。

以下の 2 つの例では、VALUE1 と VALUE2 = 'ABC'

-- 機能しません

SELECT * FROM TABLE1 INNER JOIN TABLE2
ON UPPER(VALUE1) = UPPER(VALUE2)

-- 作品

SELECT * FROM TABLE1 INNER JOIN TABLE2
ON UPPER(TRIM(VALUE1)) = UPPER(TRIM(VALUE2))

他の誰かがこの問題に遭遇しましたか?

4

1 に答える 1

0

どれどれ:

CREATE TABLE table1(value1 varchar(10));
CREATE TABLE table2(value2 varchar(10));
INSERT INTO table1 values('ABC ');
INSERT INTO table2 values('ABC ');

SELECT * FROM TABLE1 INNER JOIN TABLE2
ON UPPER(VALUE1) = UPPER(VALUE2)

結果:

値1 | 値2
--------+--------
 ABC | ABC

動作するようです。

スペースに関するセマンティクスが異なるため、CHAR(N)の代わりに type を使用しないでください。VARCHAR(N)

于 2013-08-03T15:07:01.717 に答える