Использование REPLACE в SQL Query для символов перевода строки / возврата каретки

У меня есть база данных с именем Тип счета, в которой есть символы возврата каретки и перевода строки (CHAR(10) и CHAR(13)).

Когда я ищу это значение, мне нужно сделать REPLACE как показано ниже. Следующий код работает нормально.

SELECT AccountNumber,AccountType, 
  REPLACE(REPLACE(AccountType,CHAR(10),'Y'),CHAR(13),'X') FormattedText 
FROM Account 
WHERE AccountNumber=200
AND REPLACE(REPLACE(AccountType,CHAR(10),' '),CHAR(13),' ') LIKE 
'%Daily Tax Updates:  -----------------        Transactions%'

Мой вопрос - какие другие символы (похожие на CHAR (10) и CHAR (13)) нуждаются в такой замене?

Примечание: тип данных для столбца VARCHAR,

Примечание. Запрос запускается из SQL Server Management Studio.

введите описание изображения здесь

1 ответ

Решение

Возможно есть встроенные вкладки (CHAR(9)) и т. д. Вы можете узнать, каких других персонажей вам нужно заменить (мы не знаем, какова ваша цель) на что-то вроде этого:

DECLARE @var NVARCHAR(255), @i INT;

SET @i = 1;

SELECT @var = AccountType FROM dbo.Account
  WHERE AccountNumber = 200
  AND AccountType LIKE '%Daily%';

CREATE TABLE #x(i INT PRIMARY KEY, c NCHAR(1), a NCHAR(1));

WHILE @i <= LEN(@var)
BEGIN
  INSERT #x 
    SELECT SUBSTRING(@var, @i, 1), ASCII(SUBSTRING(@var, @i, 1));

  SET @i = @i + 1;
END

SELECT i,c,a FROM #x ORDER BY i;

Вы также можете подумать о том, чтобы лучше очистить эти данные, прежде чем они попадут в вашу базу данных. Очистка каждый раз, когда вам нужно искать или отображать, не лучший подход.

Другие вопросы по тегам