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

có thể có trình tạo chuỗi chữ và số trong sql không

Bạn có thể tạo một hàm như sau:

create function to_base_36 (n integer) return varchar2
is
  q integer;
  r varchar2(100);
begin
  q := n;
  while q >= 36 loop
     r := chr(mod(q,36)+case when mod(q,36) < 10 then 48 else 55 end) || r;
     q := floor(q/36);
  end loop;
  r := chr(mod(q,36)+case when mod(q,36) < 10 then 48 else 55 end) || r;
  return lpad(r,4,'0');
end;

và sau đó sử dụng nó như thế này:

select rownum, to_base_36(rownum)
from dual
connect by level < 36*36*36*36;

Hoặc, mà không cần tạo một hàm:

with digits as
( select n, chr(mod(n,36)+case when mod(n,36) < 10 then 48 else 55 end) d
  from (Select rownum-1 as n from dual connect by level < 37)
)
select d1.n*36*36*36 + d2.n*36*36 + d3.n*36 + d4.n, d1.d||d2.d||d3.d||d4.d
from digits d1, digits d2, digits d3, digits d4


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SEC_CASE_SENSTIVE_LOGON trong 12c

  2. ORA-01219:cơ sở dữ liệu không mở:chỉ cho phép truy vấn trên các bảng / dạng xem cố định

  3. Điều gì là sai với PL / SQL này? Biến ràng buộc * KHÔNG ĐƯỢC KHAI BÁO

  4. Làm thế nào để trích xuất một chuỗi con từ một chuỗi trong Oracle / SQLite

  5. Truy vấn hai bảng từ các giản đồ khác nhau