SQL Server - 删除特殊字符

时间:2011-06-09 16:54:20

标签: sql sql-server tsql

我在表格中有一些特殊的unicode字符,例如项目符号和正方形。当我选择时,我想删除特殊字符,但仍然会返回文本的其余部分。

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:4)

尝试使用此功能。以下代码返回仅由Unicode字符代码范围组成的文本;在这种情况下,从0x0020 (space char)0x007E (tilde char),其余部分被省略。您可以定义一个或多个字符范围以扩展此功能的有效字符。可以找到包括其代码的Unicode字符列表,例如here

CREATE FUNCTION dbo.CharRangeOnly (@InputText NVARCHAR(4000))
  RETURNS NVARCHAR(4000)
AS
BEGIN
  DECLARE @Index INT
  DECLARE @BufferChar INT
  DECLARE @OutputText NVARCHAR(4000)

  SET @Index = 1
  SET @OutputText = ''

  WHILE @Index < LEN(@InputText) + 1
    BEGIN
      SET @BufferChar = UNICODE(SUBSTRING(@InputText, @Index, 1))

      -- here you can specify the valid character range(s)
      IF @BufferChar BETWEEN 0x0020 AND 0x007E
        SET @OutputText = @OutputText + NCHAR(@BufferChar)

      SET @Index = @Index + 1
    END

  RETURN @OutputText
END

你可以这样使用

SELECT dbo.CharRangeOnly (N'•■乕ขTeᶕst໙ ཙof  β俼 ޠ➽Unᦗic៘ode✸ᾦ')

使用这种疯狂混合的角色调用的功能令人惊讶地回归

'Test of Unicode'

答案 1 :(得分:0)

这可能有所帮助。您可以使用SQL执行此操作,或者构建CLR方法并将其导入到SQL Server实例中以进行确定。无论哪种方式,你都需要某种比较字符的标量函数。

link

答案 2 :(得分:-1)