簡體   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