Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách đảo ngược một chuỗi trong Oracle (11g) SQL mà không cần sử dụng hàm REVERSE ()

Nếu bạn đang cố gắng tránh reverse() không có giấy tờ bạn có thể sử dụng hàm utl_raw.reverse() chức năng thay vào đó, với chuyển đổi thích hợp cũng như từ RAW:

select utl_i18n.raw_to_char(
  utl_raw.reverse(
    utl_i18n.string_to_raw('Some string', 'AL32UTF8')), 'AL32UTF8')
from dual;

UTL_I18N.RAW_TO_CHAR(UTL_RAW.REVERSE(UTL_I18N.STRING_TO_RAW('SOMESTRING','AL32UT
--------------------------------------------------------------------------------
gnirts emoS                                                                     

Vì vậy, đó là lấy một giá trị ban đầu; đang làm utl_i18n.string_to_raw() trong vấn đề này; sau đó chuyển nó đến utl_raw.reverse(); sau đó chuyển kết quả của nó trở lại thông qua utl_i18n.raw_to_char() .

Không hoàn toàn chắc chắn điều đó sẽ đối phó với các ký tự nhiều byte như thế nào hoặc điều gì bạn muốn xảy ra với những ký tự đó ...

Hoặc một biến thể từ cuộc thảo luận @RahulTripathi được liên kết với , không có xử lý bộ ký tự:

select utl_raw.cast_to_varchar2(utl_raw.reverse(utl_raw.cast_to_raw('Some string')))
from dual;

UTL_RAW.CAST_TO_VARCHAR2(UTL_RAW.REVERSE(UTL_RAW.CAST_TO_RAW('SOMESTRING')))   
--------------------------------------------------------------------------------
gnirts emoS                                                                     

Nhưng chuỗi đó cũng lưu ý rằng nó chỉ hoạt động đối với các ký tự byte đơn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tuyên bố trường hợp Oracle được giải thích với các mẹo và ví dụ

  2. Create_record biểu mẫu tiên tri

  3. Chuyển đổi một loạt các giá trị Số trong Văn bản trong Truy vấn SQL Oracle

  4. Làm cách nào để tạo nhiều kết nối giản đồ bằng Java?

  5. kiểm tra kết nối từ ứng dụng C # với cơ sở dữ liệu oracle 10g