是否有一种简单的方法可以在Oracle表中查找特定NVARCHAR2列中包含一个或多个不符合标准ASCII范围的字符的行?
(我正在构建一个仓库和数据提取过程,它接收Oracle数据,将其拖入SQL Server - UCS-2 NVARCHAR - 然后将其导出为UTF-8 XML文件。我很确定我正在正确地进行所有翻译,但我想找到一堆真实的数据来测试,这更有可能导致问题。)
答案 0 :(得分:1)
不确定如何在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
答案 1 :(得分:1)
Sparky的SQL Server示例足以让我找到一个非常简单的Oracle解决方案,一旦我找到了方便的ASCIISTR()
功能。
SELECT
*
FROM
test_table
WHERE
test_column != ASCIISTR(test_column)
...似乎找到了标准7位ASCII范围之外的任何数据,并且似乎适用于NVARCHAR2和VARCHAR2。