是否有一种简单的方法可以在 Oracle 表中查找特定 NVARCHAR2 列具有一个或多个不适合标准 ASCII 范围的字符的行?
(我正在构建一个仓储和数据提取过程,它获取 Oracle 数据,将其拖入 SQL Server——UCS-2 NVARCHAR——然后将其导出为 UTF-8 XML 文件。我很确定我是正确完成所有翻译,但我想找到一堆真实数据进行测试,这更有可能导致问题。)
不知道如何在 Oracle 中解决这个问题,但这是我在 MS-SQL 中为处理相同问题所做的事情......
create table #temp (id int, descr nvarchar(200))
insert into #temp values(1,'Now is a good time')
insert into #temp values(2,'So is yesterday')
insert into #temp values(2,'But not '+NCHAR(2012))
select *
from #temp
where CAST(descr as varchar(200)) <> descr
drop table #temp
一旦我找到了方便的ASCIISTR()
功能,Sparky 的 SQL Server 示例就足以让我找到一个非常简单的 Oracle 解决方案。
SELECT
*
FROM
test_table
WHERE
test_column != ASCIISTR(test_column)
...似乎可以找到标准 7 位 ASCII 范围之外的任何数据,并且似乎适用于 NVARCHAR2 和 VARCHAR2。