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