Existe-t-il un moyen de définir l'ordre par défaut utilisé par Oracle pour NULL LAST (ou NULL FIRST ), sans avoir à le mettre dans chaque requête?
Non, il n'y a aucun moyen de changer le comportement par défaut de NULLS FIRST
et NULLS LAST
:
NULLS LAST est la valeur par défaut pour l'ordre croissant et NULLS FIRST est la valeur par défaut pour l'ordre décroissant.
Je ne peux pas prouver qu'il est impossible de changer, mais je ne trouve pas une telle fonctionnalité aux endroits où elle est le plus susceptible d'être implémentée.
Option SQL Le manuel ne mentionne rien.
Paramètre Aucun des paramètres nls dans V$PARAMETER
le contrôler: select * from v$parameter where name like '%nls%';
Paramètre caché Il n'y a pas paramètre caché . J'ai essayé de rechercher quelque chose comme% null% ou% sort%, aucun d'eux ne semble pertinent.
Locale Builder Oracle vous permet de créer votre propre tri personnalisé . Il a beaucoup d'options, mais aucune d'entre elles ne vous permet de définir comment les NULL sont triés. La définition des nombres de tri majeur et de tri mineur vraiment élevé ou faible ne le change pas (j'espérais qu'un NULL a été implémenté comme une petite ou une grande valeur codée en dur). Vous pouvez définir l'ordre de tri pour 0x0000, qui est "NULL", mais c'est un type différent de NULL.
Non, il n'y a aucun moyen d'activer la commande par défaut sans utiliser order by
clause, qui vous permet de mettre NULL
s en dernier ou en premier. Voici un exemple:
Ordre croissant
SQL> with t1(col) as(
2 select 1 from dual union all
3 select 2 from dual union all
4 select null from dual union all
5 select 3 from dual
6 )
7 select *
8 from t1
9 order by col asc nulls last
10 ;
Résultat:
COL
------
1
2
3
null
Ordre décroissant
SQL> with t1(col) as(
2 select 1 from dual union all
3 select 2 from dual union all
4 select null from dual union all
5 select 3 from dual
6 )
7 select *
8 from t1
9 order by col desc nulls last
10 ;
Résultat:
COL
----------
3
2
1
null
Dans l'ordre croissant, les valeurs NULL seront toujours triées en dernier