一、原题
二、题目翻译
要从SALES表中提取出PROD_ID列包含'_D123'字符串的产品明细。
下面哪一个WHERE条件子句可以获得所需的输出结果?
三、题目解析
ESCAPE子句为指定转译字符,因为'_'下画线在LIKE子句中指的是任意一个字符,所以需要把'_'下画线进行转义,转义字符设置为'\'。
四、实验
You need to extract details of those products in the SALES table where the PROD_ID column contains the string '_D123'.答案 B
Which WHERE clause could be used in the SELECT statement to get the required output?
A. WHERE prod_id LIKE '%_D123%' ESCAPE '_'
B. WHERE prod_id LIKE '%\_D123%' ESCAPE '\'
C. WHERE prod_id LIKE '%_D123%' ESCAPE '%_'
D. WHERE prod_id LIKE '%\_D123%' ESCAPE '\_'
二、题目翻译
要从SALES表中提取出PROD_ID列包含'_D123'字符串的产品明细。
下面哪一个WHERE条件子句可以获得所需的输出结果?
三、题目解析
ESCAPE子句为指定转译字符,因为'_'下画线在LIKE子句中指的是任意一个字符,所以需要把'_'下画线进行转义,转义字符设置为'\'。
四、实验
SQL> drop table test;
Table dropped.
SQL> create table test(id int,prod_id varchar2(20));
Table created.
SQL> insert into test values(1,'123_D123abc');
1 row created.
SQL> insert into test values(2,'123abc');
1 row created.
SQL> insert into test values(3,'D123');
1 row created.
SQL> insert into test values(4,'Da123');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from test;
ID PROD_ID
---------- ----------------------------------------
1 123_D123abc
2 123abc
3 D123
4 Da123
SQL> select * from test
2 WHERE prod_id LIKE '%_D123%' ESCAPE '_';
WHERE prod_id LIKE '%_D123%' ESCAPE '_'
*
ERROR at line 2:
ORA-01424: missing or illegal character following the escape character
SQL> select * from test
2 WHERE prod_id LIKE '%\_D123%' ESCAPE '\';
ID PROD_ID
---------- ----------------------------------------
1 123_D123abc
SQL> select * from test
2 WHERE prod_id LIKE '%_D123%' ESCAPE '%_';
WHERE prod_id LIKE '%_D123%' ESCAPE '%_'
*
ERROR at line 2:
ORA-01425: escape character must be character string of length 1
SQL> select * from test
2 WHERE prod_id LIKE '%\_D123%' ESCAPE '\_';
WHERE prod_id LIKE '%\_D123%' ESCAPE '\_'
*
ERROR at line 2:
ORA-01425: escape character must be character string of length 1
Table dropped.
SQL> create table test(id int,prod_id varchar2(20));
Table created.
SQL> insert into test values(1,'123_D123abc');
1 row created.
SQL> insert into test values(2,'123abc');
1 row created.
SQL> insert into test values(3,'D123');
1 row created.
SQL> insert into test values(4,'Da123');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from test;
ID PROD_ID
---------- ----------------------------------------
1 123_D123abc
2 123abc
3 D123
4 Da123
SQL> select * from test
2 WHERE prod_id LIKE '%_D123%' ESCAPE '_';
WHERE prod_id LIKE '%_D123%' ESCAPE '_'
*
ERROR at line 2:
ORA-01424: missing or illegal character following the escape character
SQL> select * from test
2 WHERE prod_id LIKE '%\_D123%' ESCAPE '\';
ID PROD_ID
---------- ----------------------------------------
1 123_D123abc
SQL> select * from test
2 WHERE prod_id LIKE '%_D123%' ESCAPE '%_';
WHERE prod_id LIKE '%_D123%' ESCAPE '%_'
*
ERROR at line 2:
ORA-01425: escape character must be character string of length 1
SQL> select * from test
2 WHERE prod_id LIKE '%\_D123%' ESCAPE '\_';
WHERE prod_id LIKE '%\_D123%' ESCAPE '\_'
*
ERROR at line 2:
ORA-01425: escape character must be character string of length 1