Подтвердить что ты не робот

Как удалить невидимые символы в t-sql?

Я пробовал

UPDATE TABLENAME SET COLUMNNAME = REPLACE(COLUMNNAME, '\t', '')

Но я не знаю, как написать TAB в t-sql

4b9b3361

Ответ 1

Код ASCII для вкладки - 9; вы можете попробовать

update tablename set columnname = replace(columnname, char(9), '')

Ответ 2

Для TAB и ENTER

SELECT
    -- TRIM AND REPLACE 'TAB' AND 'ENTER'
    LTRIM(RTRIM(
        REPLACE(
            REPLACE(
                REPLACE(columnname, CHAR(9), ' '),
            CHAR(13), ' '),
        CHAR(10), ' ')
    ))

Ответ 3

В начале моих TSql sProcs я часто ставил

   Declare @nl Char(2) = char(13) + char(10)
   Declare @tab Char(1) = char(9)
   etc...

Затем вы можете использовать эти объявленные переменные где угодно в остальной части proc без потери ясности...

Ответ 4

Вы можете поместить символ табуляции в строку, просто нажмите клавишу табуляции.

Это будет работать, но оно не очень читаемо.

Ответ 5

Я нашел решение:

В T-SQL вы не избегаете символов, вы вставляете или вводите их непосредственно в кавычки. Он работает даже для \r\n (возврат каретки, новая строка = вы нажимаете клавишу ввода)

Ответ 6

  Оформить заказ этой функции. Это удалит все недействительные символы

-- =============================================
-- Author:      xenoivan
-- Description: clean invalid chars
-- =============================================
CREATE FUNCTION [dbo].[fnClean] 
(
    @in NVARCHAR(MAX)
)
RETURNS  NVARCHAR(MAX)
AS
BEGIN
    -- Declare the return variable here
    DECLARE @out NVARCHAR(MAX)

    -- Add the T-SQL statements to compute the return value here
    SELECT @out = REPLACE(@in,N'َ','')
    SELECT @out = REPLACE(@out,char(9),'')
    SELECT @out = REPLACE(@out,char(13),'')
    SELECT @out = REPLACE(@out,char(10),'')
    SELECT @out = REPLACE(@out,N'‬','')
    SELECT @out = REPLACE(@out,N'‬','')
    SELECT @out = REPLACE(@out,N'‬‬','')
    SELECT @out = REPLACE(@out,N'‎', '')--its a hidden character
    SELECT @out = REPLACE(@out,N'‎', '')--ltr code
    SELECT @out = REPLACE(@out,N'‎', '')--rtl code
    SELECT @out = REPLACE(@out,N'۰', '0')
    SELECT @out = REPLACE(@out,N'۱', '1')
    SELECT @out = REPLACE(@out,N'۲', '2')
    SELECT @out = REPLACE(@out,N'۳', '3')
    SELECT @out = REPLACE(@out,N'۴', '4')
    SELECT @out = REPLACE(@out,N'۵', '5')
    SELECT @out = REPLACE(@out,N'۶', '6')
    SELECT @out = REPLACE(@out,N'۷', '7')
    SELECT @out = REPLACE(@out,N'۸', '8')
    SELECT @out = REPLACE(@out,N'۹', '9')
    SELECT @out = REPLACE(@out,N'٠', '0')
    SELECT @out = REPLACE(@out,N'١', '1')
    SELECT @out = REPLACE(@out,N'٢', '2')
    SELECT @out = REPLACE(@out,N'٣', '3')
    SELECT @out = REPLACE(@out,N'٤', '4')
    SELECT @out = REPLACE(@out,N'٥', '5')
    SELECT @out = REPLACE(@out,N'٦', '6')
    SELECT @out = REPLACE(@out,N'٧', '7')
    SELECT @out = REPLACE(@out,N'٨', '8')
    SELECT @out = REPLACE(@out,N'٩', '9');

    -- Return the result of the function
    RETURN @out

END