Попробуйте использовать эту функцию.Следующий код возвращает текст, составленный только из диапазона кодов символов Unicode;в этом случае от 0x0020 (space char)
до 0x007E (tilde char)
, а остальные опущены.Вы можете определить один или несколько диапазонов символов, чтобы расширить допустимые символы для этой функции.Список символов 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✸ᾦ')
Функция, вызываемая этим сумасшедшимсмесь символов неожиданно возвращается
'Test of Unicode'