替换不适合某种编码的字符

时间:2012-11-30 04:26:47

标签: sql sql-server ssis

我在SQL Server 2008数据库(10.0.2841)中有一列我需要插入另一个数据库(10.0.5500)。在插入目标数据库之前,我必须确保该列仅包含windows-1252个字符。

我目前正在使用SSIS包来执行此操作。我的源代码查询有一堆“替换”它可以工作,但它太丑了,肯定很快就无法维护。

select replace(replace(rep.......etc(column, 'º', ''), nchar(0x9D), ''), ......etc from table

肯定有更好的方法可以做到这一点,但我不知道它是什么。那么,我怎么说在我的查询中(或者在脚本组件中?),“如果这里的某个字符在这个编码中不起作用,那么在它的位置给我一个空字符串?”

2 个答案:

答案 0 :(得分:0)

我假设您的归类与您的目标数据库不同。也许您可以使用COLLATE将排序规则更改为目标数据库的排序规则。 例如:

SELECT
  column COLLATE Latin1_General_CI_AS
FROM table

答案 1 :(得分:0)

我可能会在数据流中添加脚本转换并应用.NET Framework,例如Encoding.Convert,ref http://msdn.microsoft.com/en-us/library/kdcak6ye.aspx