我有以下 SQL 查询,它正在查找表中的重复值(两个值为 null 的值必须被归类为重复值,因此使用 nvl):
select * from PersonLinkTable personLink
where personLink.RefPerson = 100
and nvl(to_char(personLink.PersonLinkType), '###') = nvl(to_char(PersonLinkTable.PersonLinkType), '###') // Repeats for required columns
第三行对所需的列重复,并在将来添加任何新列时自动生成。问题是当我添加 to_char 时,这是经过测试并导致“无效数字”Oracle 错误。我相信 to_char 是需要的,以防将来添加任何日期列。
为什么以这种方式使用 to_char 会导致“无效号码”错误,正确的使用方法是什么?目前的列类型是 varchar2、char 和 number。
此查询在 SQL Server 上正常工作,但有一些更改 - 没有 to_char、isnull 而不是 nvl,并且 null 值更改为空字符串而不是 '###'。这是一个更大的查询的一部分,它周围有“并且不存在”。