Evaluate the following query:
SQL>SELECT cust_id, cust_city FROM customers WHERE
cust_first_name NOT LIKE 'A_%g_%' AND
cust_credit_limit BETWEEN 5000 AND 15000 AND
cust_credit_limit NOT IN (7000, 11000) AND
cust_city NOT BETWEEN 'A' AND 'B';
Which statement is true regarding the above query?
B.It produces an error because the condition on the CUST_CITY column is not valid.
C.It produces an error because the condition on the CUST_FIRST_NAME column is not valid.
D.It produces an error because conditions on the CUST_CREDIT_LIMIT column are not valid.
答案:A
A:正确
B:错误
cust_city NOT BETWEEN 'A' AND 'B',这种是进行的ascii进行的判断,比如
SQL> select 1 from dual where 'B' between 'A' and 'C';
1----------
1
‘B' between ’A' and ‘C' 相当于 ’B' >= 'A' and 'B' <='C'
在比如
SQL> select 1 from dual where 'ABC' between 'A' and 'C';
1
----------
1
SQL> select 1 from dual where 'CBA' between 'A' and 'C';
no rows selected
第一个有结果而第二个没有,这是因为‘ABC' 首字母为A,和between 的开头A相等,因此开始判断第二个字母,由于between开始的字符 没有第二个字母所以符合
第二个没有结果是因此,第一个为C和and的C相等,然后 判断第二个,第二个为B ,但是and的C没有第二个字符结果给大了
SQL> select 1 from dual where 'CBA' between 'A' and 'CC';
1
----------
1
这个就符合了,因此B<C
C:错误
cust_first_name NOT LIKE 'A_%g_%',这种匹配的是A开头,然后任意字符中间有个g,然后是任意字符,比如SQL> select 1 from dual where 'Awwwwwgwwww' LIKE 'A_%g_%';
1
----------
1
D:错误