Chúng tôi có một bảng có cột varchar2(100)
, đôi khi có chứa dòng vận chuyển trả về & dòng nguồn cấp dữ liệu. Chúng ta nên loại bỏ các ký tự đó trong truy vấn SQL. Chúng tôi đang sử dụng:Chức năng Oracle REPLACE() không xử lý vận chuyển trả về và dòng nguồn cấp dữ liệu
REPLACE(col_name, CHR(10))
trong đó có không có tác dụng, tuy nhiên thay thế 'CHR (10) cho một nhân vật 'chữ' thường hơn chứng tỏ rằng REPLACE chức năng làm việc khác. Chúng tôi cũng đã phát hiện ra rằng
REPLACE(col_name, CHR(10), '_')
tìm vị trí của mới-line, nhưng chèn gạch dưới sau nó, chứ không phải thay thế nó.
Chạy trên Oracle8i. Nâng cấp không phải là một tùy chọn.
Bạn có thể giải thích chi tiết phần ''x'' của mã? Tôi không đi theo. Tôi hiểu rằng bạn cần phải chỉ định một sự thay thế, nhưng tại sao bạn cần phải bao gồm sự thay thế ở đầu của đối số thứ hai? –
Nếu bạn viết 'TRANSLATE (col_name, CHR (10) || CHR (13), null)' thì nó sẽ không hoạt động - nó sẽ luôn trả về NULL (một quirk của null xử lý). Nếu bạn viết 'TRANSLATE (col_name, CHR (10) || CHR (13), 'x')' thì nó sẽ chuyển đổi mỗi chữ cái CHR (10) thành 'x', không phải là thứ mong muốn. Nếu chúng ta đặt trước cả hai đối số bằng dấu 'x' thì nó sẽ dịch 'x' thành 'x' và CHR (10), CHR (13) thành null, cho kết quả mong muốn. –
Gotcha, do đó, đó là những gì phần này của tài liệu tham khảo có nghĩa là 'Trong trường hợp này, các ký tự phụ ở cuối from_string không có ký tự tương ứng trong to_string. Nếu những ký tự thừa này xuất hiện trong char, thì chúng sẽ bị xóa khỏi giá trị trả về.' Cảm ơn! –