lnnvl用于某个语句的where子句中的条件,如果条件为true就返回false;如果条件为UNKNOWN或者false就返回true。该函数不能用于复合条件如AND, OR, or BETWEEN中
要显示所有COMMISSION_PCT <>0.2 的记录,包含空值,如果我们直接使用
select employee_id,commission_pct from employees where commission_pct<>0.2 ;
EMPLOYEE_ID COMMISSION_PCT
----------- --------------
145 .4
146 .3
147 .3
148 .3
150 .3
151 .25
152 .25
155 .15
156 .35
157 .35
158 .35
EMPLOYEE_ID COMMISSION_PCT
----------- --------------
159 .3
160 .3
161 .25
162 .25
163 .15
164 .1
165 .1
166 .1
167 .1
168 .25
171 .15
EMPLOYEE_ID COMMISSION_PCT
----------- --------------
172 .15
173 .1
174 .3
175 .25
178 .15
179 .1
已选择 28 行。
看到不含COMMISSION_PCT 为 NULL的记录,如果想包含NULL的记录,可以使用 LNNVL函数:
SQL> select employee_id,commission_pct from hr.employees where lnnvl(commission_pct=0.2) ;
EMPLOYEE_ID COMMISSION_PCT
----------- --------------
100
101
102
103
104
105
106
107
108
109
110
EMPLOYEE_ID COMMISSION_PCT
----------- --------------
111
112
113
114
115
116
117
118
119
120
121
EMPLOYEE_ID COMMISSION_PCT
----------- --------------
122
123
124
125
126
127
128
129
130
131
132
EMPLOYEE_ID COMMISSION_PCT
----------- --------------
133
134
135
136
137
138
139
140
141
142
143
EMPLOYEE_ID COMMISSION_PCT
----------- --------------
144
145 .4
146 .3
147 .3
148 .3
150 .3
151 .25
152 .25
155 .15
156 .35
157 .35
EMPLOYEE_ID COMMISSION_PCT
----------- --------------
158 .35
159 .3
160 .3
161 .25
162 .25
163 .15
164 .1
165 .1
166 .1
167 .1
168 .25
EMPLOYEE_ID COMMISSION_PCT
----------- --------------
171 .15
172 .15
173 .1
174 .3
175 .25
178 .15
179 .1
180
181
182
183
EMPLOYEE_ID COMMISSION_PCT
----------- --------------
184
185
186
187
188
189
190
191
192
193
194
EMPLOYEE_ID COMMISSION_PCT
----------- --------------
195
196
197
198
199
200
201
202
203
204
205
EMPLOYEE_ID COMMISSION_PCT
----------- --------------
206
已选择 100 行。
|