在NVARCHAR列中查找ASCII范围之外的字符值
问题描述:
是否有一种简单的方法可以在Oracle表中找到特定NVARCHAR2列包含一个或多个不符合标准ASCII范围的字符的行? (我正在构建一个仓库和数据提取过程,它将Oracle数据拖入SQL Server - UCS-2 NVARCHAR - 然后将其导出到UTF-8 XML文件。我很漂亮确定我正在做所有的翻译,但我想找到一堆真实的数据来测试,这很可能会导致问题。)在NVARCHAR列中查找ASCII范围之外的字符值
答
斯帕克的SQL Server的例子就足以使我一个非常简单的Oracle解决方案,有一次,我发现得心应手ASCIISTR()
功能。
SELECT
*
FROM
test_table
WHERE
test_column != ASCIISTR(test_column)
...似乎找到了标准的7位ASCII范围之外的任何数据,并显示为NVARCHAR2和VARCHAR2工作。
答
不知道如何在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
这可能会有所帮助,虽然它不会在7位ASCII之外发现一些东西(插入#temp值(2,'Mais pas l''été')')我可以修复SQL Server,但我对Oracle的了解不多...... –
+1帮助指向正确的方向找到Oracle的等价物。 –