[英]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.