0

以下のシナリオを見つけてください。

ビューal_name_vwには

ノーネーム

1 ムルガン
2 xxxxx
3 yyyyy
4 bbbb
5 あああああ

以下のように、すでに参照カーソルからデータを取得しています。

open p_ref_name for
 select  anv.no,
         anv.Name
 from    al_name_vw anv 
order by anv.name;

だから私は次のように結果を得ています

ノーネーム

5 あああああ
4 bbbb
1 ムルガン
2 xxxxx
3 yyyyy

次に、以下のようにレコードを取得するロジックを変更する必要があります。

ノーネーム

5 あああああ
4 bbbb
2 xxxxx
3 yyyyy
1 ムルガン
4

3 に答える 3

0
select anv.no,
       anv.Name
  from al_name_vw anv 
 order by case when substr(anv.Name,1,1) = lower(substr(anv.Name,1,1)) --ensures names starting
                    then 1                                             --with lowercase come first
                    else 2
                end,
          anv.Name;
于 2013-09-12T08:00:02.913 に答える
0

このようにしてみて、

WITH
     T AS
     ( SELECT 1 NO, 'Murugan' NAME FROM dual
     UNION
     SELECT 2, 'xxxxx' FROM DUAL
     UNION
     SELECT 3, 'yyyyy' FROM DUAL
     UNION
     SELECT 4, 'bbbbb' FROM dual
     UNION
     SELECT 5, 'aaaaa' FROM DUAL
     )
SELECT *
FROM t
ORDER BY
     TRANSLATE (NAME, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');

あなたの質問、

OPEN p_ref_name FOR
 SELECT  anv.NO,
         anv.NAME
 FROM    al_name_vw anv 
ORDER BY 
     TRANSLATE (NAME, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
于 2013-09-12T08:00:23.640 に答える