Как я могу проверить, содержит ли результат SQL символ новой строки?

У меня есть столбец varchar, содержащий строку lol\ncats, однако в SQL Management Studio он отображается как lol cats.

Как я могу проверить, есть ли \n или нет?


person NibblyPig    schedule 06.10.2010    source источник


Ответы (6)


Используйте char(13) для '\r' и char(10) для '\n'

SELECT *
FROM your_table
WHERE your_column LIKE '%' + CHAR(10) + '%'

or

SELECT *
FROM your_table
WHERE your_column LIKE '%' + CHAR(13) + CHAR(10) + '%'
person Sachin Shanbhag    schedule 06.10.2010
comment
+1 за то, что заметил символы, которым соответствуют CHAR(10) и CHAR(13). - person Brad; 06.10.2010

Для всех пользователей MySQL, которые попадают сюда:

SELECT *
FROM your_table
WHERE your_column LIKE CONCAT('%', CHAR(10), '%')
person Taran    schedule 07.11.2015
comment
В равной степени это решение также действует в SQL 2012+. - person AeroX; 10.04.2017

В Oracle попробуйте следующую команду

SELECT * FROM table_name WHERE field_name LIKE ('%'||chr(10)||'%');
person Annie Jeba    schedule 20.05.2016
comment
это единственное, что сработало для меня! вы могли бы изменить chr на char в примере кода, потому что chr это не вещь, и мне пришлось сделать char, чтобы это сработало - person ; 15.12.2019

Для меня следующее отлично работало как в MySQL Workbench, так и в HeidiSQL (работая с MySQL) без необходимости использовать вариант char() \n:

SELECT * FROM table_name WHERE field_name LIKE '%\n%'
person dksadiq    schedule 15.02.2017

select cc.columnname,right(cc.columnname,1),ASCII(right(cc.columnname,1)) ,cc.*
from table_name cc where 
ASCII(right(cc.columnname,1)) = 13

здесь

  • cc.columnname => Имя столбца — это столбец, в котором вы хотите указать новую строку или возврат каретки.
  • right(cc.columnname,1) => это покажет только один символ, что там в конце. обычно он отображает только пустое
  • ASCII(right(cc.columnname,1)) => здесь мы получаем значение Acii этого непечатаемого значения.

увидев это значение ascii, мы можем сделать вывод, что это за элемент. Например, если это значение acsci равно 13, то возврат каретки, если это 10, то НОВАЯ строка, которую мы должны использовать для фильтрации этой записи.

  • cc.* => это дает все значения из таблицы (цель отображения)
  • where ASCII(right(cc.columnname,1)) = 13 => здесь я обнаружил, что все значения имеют значение 13 asci, поэтому фильтрация значения ascii 13

это работает для меня.

person user14963547    schedule 08.01.2021

Для всех пользователей Redshift, которые оказались здесь:

select * from your_table where your_column ~ '[\r\n]+'
person Sibimon Sasidharan    schedule 22.02.2021