我在表格中有一些特殊的unicode字符,例如项目符号•
和正方形■
。当我选择时,我想删除特殊字符,但仍然会返回文本的其余部分。
有办法做到这一点吗?
答案 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实例中以进行确定。无论哪种方式,你都需要某种比较字符的标量函数。
答案 2 :(得分:-1)