且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

枚举Oracle中按字母顺序排列的行

更新时间:2022-11-22 18:05:38

我创建了将数字转换为字符的函数:

I created function that converts number to characters:

CREATE OR REPLACE FUNCTION num_to_char(p_number IN NUMBER)
RETURN VARCHAR2
IS
  v_tmp    NUMBER;
  v_result VARCHAR2(4000) := '';
BEGIN
  v_result := CHR(MOD(p_number - 1, 26) + 65);
  IF p_number > 26 THEN
    v_result := num_to_char(TRUNC((p_number-1)/26)) || v_result;
  END IF;
  RETURN v_result;
END num_to_char;
/

您可以在选择项中使用它:

You can use it in selects:

SELECT num_to_char(ROW_NUMBER() OVER (PARTITION BY dummy ORDER BY 1))
FROM dual
CONNECT BY LEVEL < 3000

1-A,2-B,...,25-Y,26-Z,27-AA,28-AB,...,703-AAA,704-AAB,...

1 - A, 2 - B, ... , 25 - Y, 26 - Z, 27 - AA, 28 - AB, ..., 703 - AAA, 704 - AAB, ...