繁体   English   中英

SQL 服务器 - 去除特殊字符

[英]SQL Server - strip out special characters

我有一些特殊的 unicode 字符,例如表中的项目符号和正方形 当我执行 select 时,我想删除特殊字符但仍返回文本的 rest。

有没有办法做到这一点?

尝试使用这个 function。 以下代码返回仅由 Unicode 字符代码范围组成的文本; 在这种情况下,从0x0020 (space char)0x007E (tilde char) ,而 rest 被省略。 您可以定义一个或多个字符范围来扩展此 function 的有效字符。 可以在这里找到 Unicode 字符列表,包括它们的代码。

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✸ᾦ')

用这种疯狂的字符组合调用的 function 出人意料地返回

'Test of Unicode'

这可能会有所帮助。 您可以使用 SQL 来执行此操作,或者构建一个 CLR 方法并将其导入您的 SQL 服务器实例中以进行确定。 无论哪种方式,您都需要某种标量 function 逐个字符进行比较。

关联

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM