Перед проблемой, похоже, мои данные, хранящиеся в SQL Server, не хранятся правильно, просто поставили, как проверить, что данные varchar имеют возврат каретки и фид в нем? Я пытаюсь распечатать их, не показывая специальные символы. Благодаря
Как проверить мои данные в SQL Server с возвратом каретки и фидом строк?
Ответ 1
Вы можете использовать функции SQL Server char(n)
и contains()
для соответствия содержимому поля в предложении WHERE
.
carriage return: char(13) line feed: char(10)
Следующий SQL найдет все строки в some_table
, где значения some_field
содержат символы новой строки и/или возврата каретки:
SELECT * FROM some_table
WHERE CONTAINS(some_field, char(13)) OR CONTAINS(some_field, char(10))
Чтобы удалить возврат каретки в значениях some_field
, вы можете использовать функцию replace()
long с char()
и contains()
. SQL выглядел бы примерно так:
UPDATE some_table
SET some_field = REPLACE(some_field, char(13), '')
WHERE CONTAINS(some_field, char(13))
Чтобы удалить новые строки, вы можете следить за последним оператором с помощью версии char (10) этого обновления. Как вы все это делаете, зависит от того, какие типы новых строк содержат ваш текст. Но в зависимости от того, где текст был вставлен/вставлен из новых строк, может быть \r\n или\n, поэтому запуск обновлений с обоими символами \r и\n будет более безопасным, чем при условии, что вы получаете одну версию новой строки или другой.
Обратите внимание, что если новые строки были удалены, и вы хотите их сохранить, вам необходимо исправить проблему в точке входа. Вы не можете заменить или исправить то, что было удалено, чтобы сохранить исходные текстовые данные в новом столбце, который содержит исходный, немодифицированный текст.
Ответ 2
Чтобы добавить к тому, что сказали другие; когда мне нужно встроить новые строки в T-SQL, я обычно делаю:
DECLARE @nl CHAR(2) = CHAR(13) + CHAR(10);
.. затем используйте @nl
по мере необходимости. Конечно, для строк строк Windows.
Ответ 3
Взгляните на функцию Char
. См. MSDN. Это поможет найти специальные символы.