0

当在一个包含在上语句中的 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))

有没有其他人遇到过这个问题?

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
--------+--------
 美国广播公司 | 美国广播公司

它似乎工作

确保不要使用CHAR(N)type 而不是VARCHAR(N),因为它们在空格方面具有不同的语义。

于 2013-08-03T15:07:01.717 回答