在上层语句中包含的varchar列上连接两个表时,如果两个varchar值都有尾随空格,则连接不起作用。
在下面的两个例子中,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))
还有其他人遇到过这个问题吗?
答案 0 :(得分: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)
结果:
value1 | value2 --------+-------- ABC | ABC
似乎可行。
请确保您不使用CHAR(N)
类型而不是VARCHAR(N)
,因为它们有关于空格的不同语义。