我们正在使用 AWS DMS 将 DB2 数据迁移到 PostgreSQL 11.x,我们在 db2 中有带尾随空格的 varchar 字段,并且没有任何 TRIM,当我们在 WHERE 子句中使用这些字段时,这些字段可以正常工作。我认为 DB2 在内部修剪它们,因为这些是 varchar 字段。但是在迁移到 PostgreSQL 之后,这些字段在没有 TRIM 的情况下无法工作,而且有时即使您使用 TRIM,这些字段也会产生意想不到的结果。下面是详细的问题。
来源:DB2 - RECIP_NUM
-- VARCHAR(10)
--'ST001 '
select RECIP_NUMBER, SERV_TYPE, LENGTH(SERV_TYPE) AS before_trim_COL_LENGTH, LENGTH(trim(SERV_TYPE)) AS after_trim_COL_LENGTH
from serv_type rst
WHERE SERV_TYPE = 'ST001' -- THIS WORKS FINE WITHOUT TRIM
输出:DB2 的输出
目标:PGSQL -- RECIP_NUM
-- VARCHAR(10)
--'ST001 '
select RECIP_NUMBER, SERV_TYPE, LENGTH(SERV_TYPE) AS COL_LENGTH
from serv_type rst
WHERE trim(SERV_TYPE) = 'ST001' -- THIS IS NOT GIVING ANY OUTPUT WITHOUT TRIM
有什么方法可以告诉 PostgreSQL 忽略 VARCHAR 列的尾随空格?