【问题标题】:Replacing characters that do not "fit" a certain encoding替换不“适合”某种编码的字符
【发布时间】:2012-11-30 04:26:47
【问题描述】:

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

我目前正在使用 SSIS 包来执行此操作。我的源查询有一堆有效的“替换”,但它非常难看,而且肯定很快就无法维护。

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

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

【问题讨论】:

    标签: sql sql-server ssis


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      SELECT
        column COLLATE Latin1_General_CI_AS
      FROM table
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-28
        • 2014-02-02
        • 2017-10-14
        • 1970-01-01
        • 2018-02-02
        相关资源
        最近更新 更多