SSIS 2008 - 如何提取unicode字符并留下非unicode字符串

时间:2011-03-04 04:39:56

标签: ssis sql-server-2008-r2

我正在使用SSIS 2008 R2。

我想取一个unicode字符串,提取所有“unicode only”字符,这样我就留下了一个“非unicode”字符串。

在我的情况下,它应该主要是控制字符,CR,LF等等。

如果没有一英里长的更换顺序,是否有一种简单的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

不确定这是否是您想要的。 T-SQL中有一个函数unicode,它返回一个字符的unicode整数值。如果您通过“unicode only”表示unicode整数值大于255的字符,则可以使用此代码获取不带“unicode”字符的字符串。

declare @str nvarchar(5)
declare @str2 nvarchar(5)

set @str  = 'A'+nchar(300)+'B'+nchar(400)+'C'
set @str2 = ''

;with cte as
(
  select
    left(@str, 1) as val,
    stuff(@str, 1, 1, '') as rest
  union all  
  select
    left(rest, 1) as val,
    stuff(rest, 1, 1, '') as rest
  from cte
  where len(rest) > 0  
)
select @str2 = @str2 + val
from cte  
where unicode(val) < 256 

print @str
print @str2

结果

AĬBƐC
ABC