OCP 1Z0 051 83

83. Examine the data in the CUST_NAME column of the CUSTOMERS table. 
CUST_NAME 
Lex De Haan 
Renske Ladwig 
Jose Manuel Urman 
Jason Mallin 
You want to extract only those customer names that have three names and display the * symbol in place 
of the first name as follows: 
CUST NAME 
*** De Haan 
**** Manuel Urman 
Which two queries give the required output? (Choose two.) 
A. SELECT LPAD(SUBSTR(cust_name,INSTR(cust_name,' ')),LENGTH(cust_name),'*') "CUST NAME" 
FROM customers 
WHERE INSTR(cust_name, ' ',1,2)<>0; 
B. SELECT LPAD(SUBSTR(cust_name,INSTR(cust_name,' ')),LENGTH(cust_name),'*') "CUST NAME" 
FROM customers 
WHERE INSTR(cust_name, ' ',-1,2)<>0; 
C.  SELECT  LPAD(SUBSTR(cust_name,INSTR(cust_name,'  ')), LENGTH(cust_name)- INSTR(cust_name,' '),'*') "CUST NAME" 
FROM customers 
WHERE INSTR(cust_name, ' ',-1,-2)<>0; 
D.  SELECT  LPAD(SUBSTR(cust_name,INSTR(cust_name,'  ')), LENGTH(cust_name)- INSTR(cust_name,' '),'*') "CUST NAME" 
FROM customers 
WHERE INSTR(cust_name, ' ',1,2)<>0 ; 

补齐长度应补至名称总长度,c 与 d只计算子串长度,不对。
SQL> CREATE OR REPLACE VIEW customers(CUST_NAME)
  2  AS
  3  SELECT 'Lex De Haan' from dual union all
  4  SELECT 'Renske Ladwig' from dual union all
  5  SELECT 'Jose Manuel Urman' from dual union all
  6  SELECT 'Jason Mallin' from dual;
View created

SQL> SELECT cust_name,
  2         instr(cust_name, ' ', 1, 2) AS instr1,
  3         instr(cust_name, ' ', -1, 2) AS instr2,
  4         length(cust_name) AS l1,
  5         length(cust_name) - instr(cust_name, ' ') AS l2
  6    FROM customers;
CUST_NAME             INSTR1     INSTR2         L1         L2
----------------- ---------- ---------- ---------- ----------
Lex De Haan                7          4         11          7
Renske Ladwig              0          0         13          6
Jose Manuel Urman         12          5         17         12
Jason Mallin               0          0         12          6
4 rows selected

SQL> SELECT lpad(substr(cust_name, instr(cust_name, ' ')),
  2              length(cust_name),
  3              '*') "CUST NAME"
  4    FROM customers
  5   WHERE instr(cust_name, ' ', 1, 2) <> 0;
CUST NAME
--------------------------------------------------------------------------------
*** De Haan
**** Manuel Urman
2 rows selected
Executed in 0.015 seconds
SQL> SELECT lpad(substr(cust_name, instr(cust_name, ' ')),
  2              length(cust_name),
  3              '*') "CUST NAME"
  4    FROM customers
  5   WHERE instr(cust_name, ' ', -1, 2) <> 0;
CUST NAME
--------------------------------------------------------------------------------
*** De Haan
**** Manuel Urman
2 rows selected
Executed in 0.031 seconds
SQL> SELECT lpad(substr(cust_name, instr(cust_name, '  ')),
  2              length(cust_name) - instr(cust_name, ' '),
  3              '*') "CUST NAME"
  4    FROM customers
  5   WHERE instr(cust_name, ' ', -1, -2) <> 0;
SELECT lpad(substr(cust_name, instr(cust_name, '  ')),
            length(cust_name) - instr(cust_name, ' '),
            '*') "CUST NAME"
  FROM customers
 WHERE instr(cust_name, ' ', -1, -2) <> 0
ORA-01428: 参数 '-2' 超出范围
SQL> SELECT lpad(substr(cust_name, instr(cust_name, '  ')),
  2              length(cust_name) - instr(cust_name, ' '),
  3              '*') "CUST NAME"
  4    FROM customers
  5   WHERE instr(cust_name, ' ', 1, 2) <> 0;
CUST NAME
--------------------------------------------------------------------------------
Lex De
Jose Manuel
2 rows selected

Answer: AB 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值