Я хотел бы заменить (или удалить) символ новой строки в строке TSQL. Любые идеи?
Очевидное
REPLACE(@string, CHAR(13), '')
просто не буду этого делать ...
Фактически, новая строка в строке команды SQL или скрипта может быть любой из CR, LF или CR + LF. Чтобы получить их все, вам нужно что-то вроде этого:
SELECT REPLACE(REPLACE(@str, CHAR(13), ''), CHAR(10), '')
.columns[0]
вместо этого.источник
Я могу на год опоздать на вечеринку, но я работаю над запросами и MS-SQL каждый день, и мне надоели встроенные функции LTRIM () и RTRIM () (и всегда приходится их вызывать вместе), и не отловить «грязные» данные, в конце которых были символы новой строки, поэтому я решил, что пришло время реализовать лучшую функцию TRIM. Я бы приветствовал отзывы коллег!
Отказ от ответственности : это фактически удаляет (заменяет одним пробелом) расширенные формы пробелов (табуляция, перевод строки, возврат каретки и т. Д.), Поэтому он был переименован в «CleanAndTrim» из моего первоначального ответа. Идея здесь в том, что вашей строке не нужны такие дополнительные специальные пробельные символы внутри нее, и поэтому, если они не встречаются в голове / хвосте, их следует заменить обычным пробелом. Если вы целенаправленно сохранили такие символы в вашей строке (скажем, в столбце данных, на котором вы собираетесь это выполнить), НЕ ДЕЛАЙТЕ ЭТОГО! Усовершенствуйте эту функцию или напишите свою собственную, которая буквально удаляет эти символы из конечных точек строки, а не из «тела».
Хорошо, теперь, когда отказ от ответственности обновлен, вот код.
Ура!
Еще один отказ от ответственности : ваш типичный разрыв строки в Windows - CR + LF, поэтому, если ваша строка содержит их, вы в конечном итоге замените их на «двойные» пробелы.
ОБНОВЛЕНИЕ, 2016 : Новая версия, которая дает вам возможность заменить эти специальные пробельные символы другими персонажами на ваш выбор! Это также включает в себя комментарии и обходной путь для пары Windows CR + LF, то есть заменяет эту конкретную пару символов одной заменой.
источник
Новая строка в T-SQL представлена символами CHAR (13) и CHAR (10) (возврат каретки + перевод строки). Соответственно, вы можете создать инструкцию REPLACE с текстом, которым вы хотите заменить символ новой строки.
источник
Чтобы сделать то, что хотели бы большинство людей, создайте заполнитель, который не является действительным символом разрыва строки. Тогда вы действительно можете объединить подходы для:
Таким образом, вы заменяете только один раз. Подход:
Прекрасно работает, если вы просто хотите избавиться от символов CRLF, но если вы хотите заполнитель, такой как
или что-то, то первый подход немного более точен.
источник
Если тип данных столбца - « текст », вы получите сообщение об ошибке в виде
В этом случае вам нужно привести текст к nvarchar, а затем заменить
источник
Если у вас есть проблема, из-за которой вы хотите удалить только завершающие символы, вы можете попробовать это:
Это решило проблему с адресами, где процедура создала поле с фиксированным числом строк, даже если эти строки были пустыми. Чтобы сэкономить место в моем отчете SSRS, я сократил их.
источник
Если у вас есть открытая процедура с использованием sp_helptext, просто скопируйте весь текст в новый SQL-запрос и нажмите кнопку ctrl + h, используйте регулярное выражение для замены и поместите ^ \ n в поле поиска заменить пустым. для более подробной информации проверьте изображение. введите описание изображения здесь
источник
Для решения @Cerebrus: для H2 для строк "+" не поддерживается. Так:
источник
Ответ, опубликованный выше / ранее, который, как сообщалось, заменит CHAR (13) CHAR (10) возврат каретки:
Никогда не попадет в
REPLACE(MyField, CHAR(13) + CHAR(10), 'something else')
часть кода и вернет нежелательный результат:И НЕ желаемый результат одного:
Для этого потребуется переписать скрипт REPLACE следующим образом:
Поскольку поток сначала проверяет 1-й / крайний левый оператор REPLACE, затем при неудаче продолжит тестировать следующий оператор REPLACE.
источник