рдХрд╕реНрдЯрдо SQL рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг

рдкрд░рд┐рдЪрдп


рд▓рдЧрднрдЧ рдбреЗрдврд╝ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ OCP рдЙрдиреНрдирдд PL / SQL рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рд╛ рдЙрддреНрддреАрд░реНрдг рдХреА, рдлрд┐рд░ рдХрд╛рдо рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдЖрдпрд╛, рдФрд░ Oracle рдХреЗ рдорд╛рдирдХ рдЙрддреНрдкрд╛рджрди рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж, рдореИрдВ рдХрдВрдкреНрдпреВрдЯрд░ рднрд╛рд╖рд╛ рд╡рд┐рдЬреНрдЮрд╛рди рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП Oracle рдкрд░ рдЖрдзрд╛рд░рд┐рдд рджреЛ-рд╕реНрддрд░реАрдп рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЗрд╕рдХреЗ рдмрд╛рдж рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЪрд░рдг рдФрд░ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдЪреНрдЪ рддрдХрдиреАрдХреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдерд╛; рдореБрдЭреЗ рдЧреИрд░-рдорд╛рдирдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреАрдЬреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдерд╛ред рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдЧрд╣рд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЖрдзрд╛рд░ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд "рдЙрдк-рд╕рд╛рдХреНрд╖реНрдп" рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рд╛ рдХреА рддреИрдпрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред

рдиреАрдЪреЗ sql рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рдЧреИрд░-рдорд╛рдирдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВред рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдг рдЖрдорддреМрд░ рдкрд░ рдЕрдореВрд░реНрдд рдХреЛ рджреЗрдЦрддреЗ рд╕рдордп рдзреНрдпрд╛рди рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдЬрд╛рдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рднреБрд▓рд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдмрд╛рд░ рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ sql рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдмрд╛рдж рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдИред рддреЛ рдпрд╣ рдиреЛрдЯ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред


рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЖрджреЗрд╢ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж


рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА?
-- тДЦ1 select * from dual order by 1+2||dummy 

рдЙрддреНрддрд░: рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рдЖрджреЗрд╢ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
ORDER BY {col (s) | рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ | рд╕рдВрдЦреНрдпрд╛рддреНрдордХ_рдкреЛрд╕} [ASC | DESC] [NULLS FIRST | LAST] |
рдЬрд╣рд╛рдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ - рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдХреБрдВрдЬреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рдЬреИрд╕реЗ рдХрд┐ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдбреЗрдЯрд╛рдЗрдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдкрдВрдХреНрддрд┐ рдореВрд▓реНрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╕реНрдХреЗрд▓рд░ рд╕рдмрдХреНрд╡реЗрд░реА рдпрд╛ рдХреЗрд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдиред
рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ редoracle.com/javadb/10.6.2.1/ref/ rrefsqljj65656.html

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ "3X" рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рджреЛрд╣рд░реА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рд╡реНрдпрд░реНрде рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЫрдБрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд░реВрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рднрд╛рд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ, рджреЛрд╣рд░реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдХреЙрд▓рдо рд╣реИ, рдЪрд╛рд╣реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╡реЗрд░реА рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА:
 -- тДЦ2 select * from dual order by 2 

рдФрд░ рдпрд╣ рдПрдХ?
 -- тДЦ3 select * from dual order by 2+0 

рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╕реНрддрдВрднреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдЕрд░реНрдерд╛рддреНред рдХреЙрд▓рдо рдирдВрдмрд░ 2 рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЬреЛ рдХреНрд░рдорд╢рдГ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред

рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдпрд╣ рдХреЙрд▓рдо рдирдВрдмрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд░рдорд╛рдВрдХ 1 рдореЗрдВ "3X" рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдЫрдВрдЯрдиреА рдХреЗ рд╕рдорд╛рди, рд╕рдВрдЦреНрдпрд╛ 2 рд╕реЗ рдЫрдВрдЯрдиреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдЗрд╕ рдХреНрд╡реЗрд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рдХреНрдпрд╛ рдкрдВрдХреНрддрд┐ рдХреНрд░рдо рдорд┐рд▓рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдХреЛрдИ рдЧрд▓рддреА рд╣реЛрдЧреА?
 -- тДЦ4 select 3, dummy from dual union all select 2, dummy from dual order by "3" 

рдпреВрдирд┐рдпрди рд╕рднреА рдпреВрдирд┐рдпрди рд╕реЗрдЯреНрд╕ (рдпреВрдирд┐рдпрди рдХреЗ рд╡рд┐рдкрд░реАрдд) рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдЖрджреЗрд╢ рдХреЗ рдмрд┐рдирд╛, рд╣рдореЗрдВ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдорд┐рд▓рддреА рд╣реИрдВ (рд╕рдВрдШ рд╕рднреА рдореВрд▓ рдкрдВрдХреНрддрд┐ рдХреНрд░рдо рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ)ред рдЕрдм рдпрд╣ рдореБрдЦреНрдп рдкреНрд░рд╢реНрди рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ "3" рдХреНрдпрд╛ рд╣реИ? рдЪреВрдВрдХрд┐ рд╣рдо рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ "рдПрдХрд▓ рдЙрджреНрдзрд░рдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп," 3 "рд╕реНрддрдВрдн рдХрд╛ рдЙрдкрдирд╛рдо рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рд╕рдорд╛рди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдХреЙрд▓рдо рдирд╛рдо рдкрд╣рд▓реА рдХреНрд╡реЗрд░реА рд╕реЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рдХреЙрд▓рдо рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред , рдлрд┐рд░, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ, рдЕрд░реНрдерд╛рддреН, "3." рдРрд╕реЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд░реЛрдз рд╕рдВрдЦреНрдпрд╛ 5 рдореЗрдВ (рдореБрдЦреНрдп рдмрд╛рдд рдРрдк рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓рдирд╛ рд╣реИ)ред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЙрд░реНрдЯ рд╣рдореЗрд╢рд╛ asc рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо # 4 рдкрд╣рд▓реЗ рдХреЙрд▓рдо рджреНрд╡рд╛рд░рд╛ рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рд╣реИрдВред рдкрд░рд┐рдгрд╛рдо: рд▓рд╛рдЗрди "2, рдПрдХреНрд╕", рдлрд┐рд░ "3, рдПрдХреНрд╕"ред
 -- тДЦ5 select substr(dummy,1,1) from dual order by "SUBSTR(DUMMY,1,1)" 

рд╕реЗрдЯ рдкрд░ рдХреНрд╡реЗрд░реА рдирдВрдмрд░ 3 рд╕реЗ рдкреНрд░рдпреЛрдЧ рджреЛрд╣рд░рд╛рдПрдВред рдХреНрд╡реЗрд░реА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
 -- тДЦ6 select 3, dummy from dual union all select 2, dummy from dual order by 2+0 

рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрд╡реЗрд░реА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛: рд▓рд╛рдЗрди "3, рдПрдХреНрд╕" рдлрд┐рд░ "2, рдПрдХреНрд╕"ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ: рдпрд╣ рдЖрджреЗрд╢ рд╕рднреА рдХреЛ рдпреВрдирд┐рдпрди рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 2 + 0 рд░рд┐рдХреЙрд░реНрдб рдХреА рдЫрдВрдЯрд╛рдИ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдХреНрд╡реЗрд░реА рдирдВрдмрд░ 7 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рддреЛ рдпрд╣ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рдПрдХ "рд▓реЗрдХрд┐рди" рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ: рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ, рдЖрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реА рдХреНрд╡реЗрд░реА рдХреЗ рдирд╛рдо рдпрд╛ рд╕реНрддрдВрдн рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдордЧреНрд░ рдХреНрд╡реЗрд░реА рдХреЗ рдЕрдВрдд рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ:
рд╕реЗрдЯ рдСрдкрд░реЗрдЯрд░ UNION, INTERSECT, MINUS, рдпрд╛ UNION ALL рд╡рд╛рд▓реЗ рдпреМрдЧрд┐рдХ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП, ORDER BY рдХреНрд▓реЙрдЬ рдХреЛ рд╕реНрдкрд╖реНрдЯ рднрд╛рд╡реЛрдВ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдерд╛рди рдпрд╛ рдЙрдкрдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд╛рде рд╣реА, ORDER BY рдЦрдВрдб рдЕрдВрддрд┐рдо рдШрдЯрдХ рдХреНрд╡реЗрд░реА рдореЗрдВ рд╣реА рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИред ORDER BY рдХреНрд▓реЙрдЬ рдкреВрд░реЗ рдХрдВрдкрд╛рдЙрдВрдб рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯреА рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЖрджреЗрд╢ рджреЗрддрд╛ рд╣реИред download.oracle.com/docs/cd/B19306_01/server.102/b14200/queries005.htm#i2053998

рдЗрд╕рд▓рд┐рдП, рдХреНрд╡реЗрд░реА 6 рдирдВрдмрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдЧрд╛ред

 -- тДЦ7 select * from (select 3, dummy from dual union all select 2, dummy from dual) order by 2+0 


рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ


рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рд╕реЗ рдЧреБрдЬрд░реЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рдСрдкрд░реЗрдЯрд░ рдореЗрдВ рдирд╣реАрдВ рдмрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╛ рдореМрдЬреВрдж рдСрдкрд░реЗрдЯрд░реЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдирдХрд╛рд░рд╛рддреНрдордХ рд░рд╡реИрдпреЗ рдХрд╛ рдХрд╛рд░рдг рдЕрд╢рдХреНрдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдирдХреЗ рдХрд╛рдо рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рдирд╣реАрдВ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ:
 -- тДЦ1 select * from dual where 1 not in (select 2 from dual union select null from dual) 

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕ рдкреНрд░рд╢реНрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
 -- тДЦ2 select * from dual where 2 in (select 2 from dual union select null from dual) 

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 2 рдореЗрдВ рдХреБрдЫ рднреА рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ: рдЙрдкрд╢реНрд░реЗрдгреА "2" рдФрд░ "рдЕрд╢рдХреНрдд" рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд▓реМрдЯрд╛рддреА рд╣реИ, рдЬрд╣рд╛рдВ рд╕реНрдерд┐рддрд┐ рд╕рд╣реА рд╣реИ, рдкреВрд░реЗ рдХреНрд╡реЗрд░реА рдирдВрдмрд░ 2 рдореЗрдВ 1 рдкрдВрдХреНрддрд┐ - рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред

рдЕрдм рдореЗрдВ рдФрд░ рдирд╣реАрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЕрдВрддрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдпрд╣рд╛рдБ рд╣рдореЗрдВ рд╢реВрдиреНрдп рдЕрдВрдХрдЧрдгрд┐рдд рдХреЗ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
1) рдЕрд╢рдХреНрдд рд╡рд╛рдкрд╕реА рдирд▓ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рди
2) рдмреВрд▓рд┐рдпрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЕрд╢рдХреНрдд рдХрд╛рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ:
рдЕрдм рддрдХ, рд╕рдм рдХреБрдЫ рддрд╛рд░реНрдХрд┐рдХ рд╣реИред рдЕрдм рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ IN # 2 рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
2 IN (2, null) => (2 = 2) OR (2 = null) => рд╕рддреНрдп рдпрд╛ рдЕрд╢рдХреНрдд => рд╕рддреНрдп
рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 1 рдореЗрдВ NOT рдХреЗ рдХрд╛рдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
1 NOT (2, null) => (1! = 2) AND (1! = Null) => рд╕рддреНрдп рдФрд░ рдЕрд╢рдХреНрдд => null

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрд╣рд╛рдВ рдХреНрд╡реЗрд░реА # 1 рдореЗрдВ рдЦрдВрдб рдХреЛ рд╢реВрдиреНрдп рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдСрдкрд░реЗрдВрдб рд╢реВрдиреНрдп рд╣реИ, рддреЛ рд╕рдВрдкреВрд░реНрдг рдХреНрд╡реЗрд░реА # 1 рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╡реЗрд░реА рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ:
 -- тДЦ3 select * from dual where null=null 

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХреНрд╡реЗрд░реА рдирдВрдмрд░ 3 рдХреНрд░рдорд╢рдГ рдПрдХ рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд▓реМрдЯреЗрдЧреА, рдХреНрд╡реЗрд░реА рдирдВрдмрд░ 1 рднреА рдПрдХ рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд▓реМрдЯреЗрдЧреАред

рдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг


рд╕реНрдкрд╖реНрдЯ рдФрд░ рдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рд╡рд┐рд╖рдп рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд┐рдП рдмрд┐рдирд╛, рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЖрдЬ 10.09.11 10:00:00 рдФрд░ Oracle рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ DD.MM.RR рдкреНрд░рд╛рд░реВрдк рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рдП, рдХреМрди рд╕реА рдХреНрд╡реЗрд░реА рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдПрдЧреА?
 -- тДЦ1 select * from dual where sysdate>'10.09.11'; -- тДЦ2 select * from dual where sysdate||''='10.09.11'; 

рдЬрд╡рд╛рдм рджреЛрдиреЛрдВ рд╣реИред рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рдХреНрдпреЛрдВ рдФрд░ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реИ? рдЙрддреНрддрд░ рдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рддрдВрддреНрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред

рдХреНрд╡реЗрд░реА рдирдВрдмрд░ 1 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдЬрд╣рд╛рдВ рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рджрд┐рдирд╛рдВрдХ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ Oracle рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рддрд┐рдерд┐ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд┐рдерд┐ рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ (рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд┐рдерд┐ рдкреНрд░рд╛рд░реВрдк рдХреЛ NLS_DATE_FORMAT рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдХреНрд╡реЗрд░реА рдЪрд▓рд╛рдХрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
nls_session_parameters рд╕реЗ) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдпрджрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд┐рдерд┐ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреАред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рд╛рд░реВрдк рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ '10 .09.11 'рдХреЛ рджрд┐рдирд╛рдВрдХ 09/10/11 00:00:00 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ sysdate = 09/10/11 10:00:00, рдлрд┐рд░ рдХреНрд╡реЗрд░реА рдирдВрдмрд░ 1 1 рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред

рдХреНрд╡реЗрд░реА рдирдВрдмрд░ 2 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдЬрд╣рд╛рдВ рддрд╛рд░реАрдЦ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдорд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдРрд╕реЗ рдСрдкрд░реЗрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдЧрд╛, рдФрд░ рдЬрдм рддрд╛рд░реАрдЦ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рдХреЛ DD.MM.RR рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рд╣рдо рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ '10 .09.11 'рдФрд░ '10 .09.11' рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рдЬрд╣рд╛рдВ рдХреНрд▓реЙрдЬ рд╕рдВрддреБрд╖реНрдЯ рд╣реИ, рдФрд░ рдХреНрд╡реЗрд░реА рдПрдХрд▓ рдкрдВрдХреНрддрд┐ рджреЗрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдпрд╣ рд╕рдореАрдХреНрд╖рд╛ рдУрд░реЗрдХрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдХреЛрдИ рднреА рдХрд╡рд░реЗрдЬ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдпрд╣ рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдЧреИрд░-рдорд╛рдирдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрдИ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИред

Source: https://habr.com/ru/post/In128369/


All Articles