2009-08-26 3 views
41

SQL запроса для возврата каретки в строке и в конечном итоге удаление возврат кареткиSQL запросы для возврата каретки в строке и в конечном итоге удаление возврат каретки

У меня есть некоторые данные в таблице и есть некоторые символы возврат каретки в местах где я не хочу их. Я пытаюсь написать запрос, чтобы получить все строки, содержащие возвращаемые каретки.

Я попробовал этот

select * from Parameters 
where Name LIKE '%"\n" %' 

Также

select * from Parameters 
where Name LIKE '\r' 

'

Оба действительны SQL, но не возвращает то, что я ищу. Нужно ли использовать команду Как или другую команду? Как получить возврат каретки в запрос?

Возврат каретки не обязательно находится в конце строки (может быть посередине).

+0

было это для SQL Server? –

ответ

53

это будет медленно, но если это один раз вещь, попробуйте ...

select * from parameters where name like '%'+char(13)+'%' or name like '%'+char(10)+'%' 

Обратите внимание, что оператор конкатенации строки ANSI SQL равен «||», поэтому может потребоваться:

select * from parameters where name like '%' || char(13) || '%' or name like '%' || char(10) || '%' 
+2

Postgresql использует имя функции 'chr' вместо' char'. –

+0

Большое вам спасибо! – PeteFoulkes

+0

Я никогда не видел '||', используемого в строке SQL вместо 'OR'. Когда это вызывает беспокойство? – mmcrae

0

Опустите двойные кавычки из вашего первого запроса.

... LIKE '%\n%' 
0

Нечто подобное, кажется, работает для меня:

SELECT * FROM Parameters WHERE Name LIKE '%\n%' 
3

Вы также можете использовать регулярные выражения:

SELECT * FROM Parameters WHERE Name REGEXP '\n'; 
5

В SQL Server я использую бы

where charindex(char(13), name)<>0 
49

Главный вопрос в том, чтобы удалить CR/LF. Использование функции замены и полукокса работает для меня:

Select replace(replace(Name,char(10),''),char(13),'') 

Для Postgres или Oracle SQL, используйте функцию CHR вместо:

 replace(replace(Name,CHR(10),''),CHR(13),'') 
0

Это также работает

SELECT TRANSLATE(STRING_WITH_NL_CR, CHAR(10) || CHAR(13), ' ') FROM DUAL; 
+1

Это синтаксис Oracle? – HLGEM

1

это работает: выберите * из таблицы, где столбец типа '% (нажмите ввод)%'

Игнорировать скобки и нажмите enter, чтобы ввести новую строку.

Смежные вопросы