sql >> データベース >  >> RDS >> Oracle

SQLに英数字シーケンスジェネレータを使用することは可能ですか?

    次のような関数を作成できます:

    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;
    

    そして、次のように使用します:

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

    または、関数を作成せずに:

    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. SQL Serverが実行されているオペレーティングシステムを確認する(T-SQLの例)

    2. ETLプロセスでのPythonとMySQLの使用:SQLAlchemy

    3. エンティティフレームワークは、コンパイルのたびに初めてロードするのが非常に遅い

    4. DTCにエスカレーション/スパンせずにSQLServerとOracleの両方のEFとTransactionScope?