2009-08-26 28 views
41
truy vấn

SQL cho một vận chuyển trở lại trong một chuỗi và cuối cùng là loại bỏ vận chuyển trở lạitruy vấn SQL cho một vận chuyển trở lại trong một chuỗi và cuối cùng là loại bỏ vận chuyển trở lại

Tôi có một số dữ liệu trong một bảng và có một số kí tự xuống dòng ở những nơi nơi tôi không muốn chúng. Tôi đang cố gắng để viết một truy vấn để có được tất cả các chuỗi có chứa trở về vận chuyển.

Tôi cố gắng này

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

Cũng

select * from Parameters 
where Name LIKE '\r' 

'

Cả hai đều là SQL hợp lệ nhưng không được trở về những gì tôi đang tìm kiếm. Tôi có cần sử dụng lệnh Giống như hoặc lệnh khác không? Làm thế nào để tôi có được vận chuyển trở lại truy vấn?

Phương tiện vận chuyển không nhất thiết ở cuối dòng hoặc (có thể ở giữa).

+0

là điều này cho máy chủ sql? –

Trả lời

53

này sẽ bị chậm, nhưng nếu nó là một điều một lần, hãy thử ...

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

Lưu ý rằng toán tử ghép nối chuỗi ANSI SQL là "||", vì vậy có thể cần phải:

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

Postgresql sử dụng tên hàm 'chr' thay vì' char'. –

+0

Cảm ơn bạn rất nhiều! – PeteFoulkes

+0

Tôi chưa bao giờ thấy '||' được sử dụng trong một chuỗi SQL thay vì 'OR'. Khi đó là một mối quan tâm? – mmcrae

0

Bỏ qua các dấu ngoặc kép từ truy vấn đầu tiên của bạn.

... LIKE '%\n%' 
0

Something như thế này dường như làm việc cho tôi:

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

Bạn cũng có thể sử dụng biểu thức thông thường:

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

Trong SQL Server Tôi sẽ sử dụng

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

Câu hỏi chính là để loại bỏ các CR/LF. Sử dụng thay thế và char chức năng làm việc cho tôi:

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

Đối với Postgres hoặc Oracle SQL, sử dụng hàm CHR thay vì:

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

này cũng làm việc

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

Đây là cú pháp Oracle? – HLGEM

1

công trình này: chọn * từ bảng có cột như '% (nhấn enter)%'

Bỏ qua dấu ngoặc và nhấn enter để giới thiệu dòng mới.

Các vấn đề liên quan