代码之家  ›  专栏  ›  技术社区  ›  Renan Aguiar

按字母排序并忽略括号

  •  0
  • Renan Aguiar  · 技术社区  · 6 年前

    如何按字母排序并忽略括号进行选择?

    SELECT name FROM table1 ORDER BY name;
    

    它返回:

    (stu)
    abc
    suv
    

    我想:

    abc
    (stu)
    suv
    
    3 回复  |  直到 6 年前
        1
  •  1
  •   Racil Hilan    6 年前

    订购前请删除括号:

    SELECT name
    FROM table1
    ORDER BY REPLACE(name, '(', '');
    

    但是,这使得它在 name 列,因此如果表太大,性能将不好。

    如果括号的开头和结尾只能是一对,则只需删除括号中的第一个字符,即可稍微提高性能:

    SELECT name
    FROM table1
    ORDER BY CASE WHEN LEFT(name, 1) = '(' THEN SUBSTR(name, 2) ELSE name END;
    
        2
  •  0
  •   masdjab    6 年前

    尝试以下操作: SELECT name FROM table1 ORDER BY REPLACE(name, '(', '');

        3
  •  0
  •   Tripp Kinetics    6 年前

    尝试:

    SELECT name FROM table1 ORDER BY REPLACE(REPLACE(name, '(', ''), ')', '');