使用单行函数问题
使用单行函数问题
1. 以下查询的结果是什么?
SELECT ROUND(144.23,-1) FROM dual;
- 140
- 144
- 150
- 100
答案:A . ROUND 函数会根据指定的精度 -1 对值 144.23 进行四舍五入并返回 140。
检查给定的 EMPLOYEES 表的结构并回答后面的问题 2 和 3。
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
2. 您当前位于新泽西州并已连接到圣地亚哥的远程数据库。您发出以下命令。
SELECT ROUND (sysdate-hire_date,0) FROM employees WHERE (sysdate-hire_date)/180 = 2;
这个查询的结果是什么?
- 一个错误,因为 ROUND 函数不能与 Date 参数一起使用。
- 由于 WHERE 条件表达式无效而导致的错误。
- 根据当前的圣地亚哥日期和时间,自雇员被雇用以来的天数。
- 根据当前新泽西州的日期和时间,自雇员被雇用以来的天数。
答案:C . SYSDATE 函数将获取它远程连接的数据库的当前时间。您必须执行基本的算术运算来调整时区。
3. 您需要显示名字中带有字母“s”且姓氏第二位带有字母“t”的员工的姓名。哪个查询会提供所需的输出?
-
SELECT first_name, last_name FROM employees WHERE INSTR(first_name,'s') <> 0 AND SUBSTR(last_name,2,1) = 't';
-
SELECT first_name, last_name FROM employees WHERE INSTR(first_name,'s') <> '' AND SUBSTR(last_name,2,1) = 't';
-
SELECT first_name, last_name FROM employees WHERE INSTR(first_name,'e') IS NOT NULL AND SUBSTR(last_name,2,1) = 't';
-
SELECT first_name, last_name FROM employees WHERE INSTR(first_name,'e') <> 0 AND SUBSTR(last_name,LENGTH(first_name),1) = 't';
答案: A. INSTR 函数返回给定字符在所需字符串中的位置。SUBSTR 函数从给定的开始和结束位置返回字符串中的字符集。
4. 下列关于 COUNT 函数的说法正确的是?
- COUNT (*) 计算任何数据类型列中的重复值和 NULL 值。
- COUNT 函数不能用于 DATE 数据类型。
- COUNT (DISTINCT job_id) 返回不包括 job_id 列中包含重复项和 NULL 值的行的行数。
- 使用带有 DISTINCT 关键字的 COUNT 函数的 SELECT 语句不能有 WHERE 子句。
答案: A. COUNT(*) 函数返回表中满足 SELECT 语句条件的行数,包括重复行和任何列中包含空值的行。如果 SELECT 语句中包含 WHERE 子句,则 COUNT(*) 返回满足 WHERE 子句中条件的行数。相反,COUNT(expr) 返回由 expr 标识的列中的非空值的数量。COUNT(DISTINCT expr) 返回由 expr 标识的列中的唯一非空值的数量。
5、以下哪个命令用于统计Oracle数据库中的行数和非NULL值?
- 非空
- 指令
- 子字符串
- 数数
答案:D . COUNT (ALL column_name) 用于计算排除 NULL 的行数。类似地,COUNT(*) 用于计算包括 NULL 在内的列值。
6. 下面给出的查询的结果是什么?
SELECT 100+NULL+999 FROM dual;
- 100
- 999
- 无效的
- 1099
答案:C.任何带有 NULL 的算术运算都会导致 NULL。
7. 关于单行函数,下列哪些说法是正确的?
- 他们只接受一个参数。
- 它们只能嵌套到两层。
- 参数只能是列值或常量。
- 它们可以返回与引用不同的数据类型值。
答案:D。单行函数可以接受多个参数,并且返回类型可以与输入的数据类型不同。
8. 以下哪个查询会将值 1680 格式化为 $16,80.00?
-
SELECT TO_CHAR(1680.00,'$99G99D99') FROM dual;
-
SELECT TO_CHAR(1680.00,'$9,999V99') FROM dual;
-
SELECT TO_CHAR(1680.00,'$9,999D99') FROM dual;
-
SELECT TO_CHAR(1680.00,'$99G999D99') FROM dual;
答案:A、D。格式模型 $99G999D99 将给定的数字格式化为数字、组分隔符和小数。其他格式元素可以是前导零、小数点位置、逗号位置、本地货币、科学记数法和符号。
9. 确定以下查询的输出。
SELECT RPAD(ROUND('78945.45'),10,'*') FROM dual;
- 78945*****
- **78945.45
- 函数 RPAD 不能与其他函数嵌套
- 78945.45****
答案: A. LPAD(string, num, char) 和 RPAD(string, num, char) 函数在给定字符串的左侧或右侧添加一个字符,直到填充后达到指定的长度 (num)。ROUND 函数将值 78945.45 舍入到 78945,然后用“*”填充它,直到达到 10 的长度。
10. 以下哪个命令允许您在 SQL 查询中遇到 NULL 或非 NULL 值时替换值?
- NVL
- NVLIF
- NVL2
- 神经网络
答案:C . NVL2 函数至少接受三个参数。NVL2 函数检查第一个表达式。如果它不为空,则 NVL2 函数返回第二个参数。如果第一个参数为空,则返回第三个参数。
11. Oracle DB 中不能合并以下哪种类型的单行函数?
- 特点
- 数字
- 转换
- 以上都不是
答案:D。Oracle DB 中可以合并字符、数字、日期、转换和杂项等单行函数以及程序员编写的类型。
12. 下列子句中,单行函数可以用在哪些地方?
- 选择
- 在哪里
- 订购者
- 上述所有的
答案:D.单行函数可用于SELECT 语句、WHERE 子句和ORDER BY 子句。
13. 关于 Oracle DB 中的 NVL 函数,正确的是什么?
- NVL 的语法是 NVL (exp1, exp2),其中 exp1 和 exp2 是表达式。
- 如果表达式 exp1 为 NULL,则 NVL (exp1, exp2) 将返回 exp2 的值。
- 如果 exp1 不是 NULL,NVL (exp1, exp2) 将返回表达式 exp2 的值。
- 如果表达式 exp2 为 NULL,则 NVL (exp1, exp2) 将返回 exp1。
答案:B. NVL 函数用替代值替换空值。数据类型为日期、字符和数字的列可以使用 NVL 来提供替代值。列及其替代项的数据类型必须匹配。
14. 检查给定的 EMPLOYEES 表的结构。
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
SELECT last_name, NVL(job_id, 'Unknown') FROM employees WHERE last_name LIKE 'A%' ORDER BY last_name;
- 它会在执行时抛出 ORA 错误。
- 它将列出 EMPLOYEES 表中所有员工的工作 ID。
- 它将列出所有员工的工作 ID,并用文字“未知”替换 NULL 工作 ID。
- 它将显示所有员工的姓氏及其工作 ID,包括工作 ID 中的 NULL 值。
答案:C . NVL 函数用替代值替换空值。数据类型为日期、字符和数字的列可以使用 NVL 来提供替代值。列及其替代项的数据类型必须匹配。
15. 以下查询的结果是什么?
SELECT NVL (NULL,'1') FROM dual;
- 无效的
- 1
- 0
- 由于无法为 NVL 函数显式指定 NULL,因此出现错误
答案:B . NVL 将 NULL 视为一个值并返回替代参数 1 作为结果。
16. 以下查询的结果是什么?(考虑给定的 EMPLOYEES 表的结构)
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
SELECT employee_id , NVL(salary, 0) FROM employees WHERE first_name like 'P%' ORDER BY first_name;
- 对于名字以“P”开头的所有员工,它将在工资列中显示 0
- 它将显示姓名以“P”开头的员工的薪水,如果薪水为 NULL,则显示为 0。
- 它会抛出一个 ORA 错误,因为 ORDER BY 子句也应该包含工资列。
- NVL函数应正确用作NVL(0,salary)
答案:B. NVL 函数用替代值替换空值。数据类型为日期、字符和数字的列可以使用 NVL 来提供替代值。列及其替代项的数据类型必须匹配。
17. 下列关于 NVL 声明的说法中,哪些是正确的?
SELECT NVL (arg1, arg2) FROM dual;
- 这两个表达式 arg1 和 arg2 只能采用 VARCHAR2 或 NUMBER 数据类型格式。
- 参数 arg1 和 arg2 应具有相同的数据类型
- 如果 arg1 是 VARCHAR2,则 Oracle DB 在比较它们之前将 arg2 转换为 arg1 的数据类型,并在 arg1 的字符集中返回 VARCHAR2。
- NVL 函数不能与 DATE 数据类型的参数一起使用。
答案:C。如果 arg1 是 VARCHAR2 数据类型,Oracle 对 arg2 id arg2 是 NUMBER 数据类型进行隐式类型转换。在所有其他情况下,两个参数必须具有相同的数据类型。
18. 以下查询的结果是什么?(考虑给定的 EMPLOYEES 表的结构)
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
SELECT NVL2(job_id,'Regular Employee','New Joinee') FROM employees;
- 它将为所有具有 NULL 工作 ID 的员工返回值“Regular Employee”
- 它将为所有具有 NULL 工作 ID 的员工返回值“New Joinee”
- 如果作业 ID 为 NULL,它将返回“Regular Employee”
- 它会在执行时抛出 ORA 错误。
答案:B . NVL2 函数检查第一个表达式。如果第一个表达式不为空,则 NVL2 函数返回第二个表达式。如果第一个表达式为空,则返回第三个表达式。
19、下列说法正确的是。
NVL2 (arg1, arg2, arg3)
- Arg2 和 Arg3 可以有任何数据类型
- Arg1 不能有 LONG 数据类型
- Oracle 会根据 Arg1 转换 expr2 的数据类型
- 如果 Arg2 是 NUMBER,则 Oracle 确定数字优先级,将另一个参数隐式转换为该数据类型,并返回该数据类型。
答案:D . arg2 和 arg3 参数的数据类型必须兼容,不能是 LONG 类型。它们必须是相同的类型,或者必须可以将 arg3 转换为 arg2 参数的类型。NVL2函数返回的数据类型与arg2参数相同。
20. 检查给定的 EMPLOYEES 表的结构。
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
SeLECT first_name, salary, NVL2(commission_pct, salary + (salary * commission_pct), salary) "Income" FROM employees WHERE first_name like 'P%' ORDER BY first_name;
- 如果员工的佣金不为空,则将退还工资。
- 如果员工的佣金不为空,则将返回 Commission_pct。
- 如果员工赚取佣金,则将返回名字以“P”开头且薪水+(salary*commission_pct) 的员工。
- 查询抛出错误,因为 NVL2 中写入了数学表达式。
答案:C . NVL2 函数检查第一个表达式。如果第一个表达式不为空,则 NVL2 函数返回第二个表达式。如果第一个表达式为空,则返回第三个表达式。
21. Oracle DB 中的 NULLIF 函数正确的是什么?
- 如果两个表达式都不是 NULL,则 NULLIF(expr1,expr2) 将返回 expr2。
- 如果两个表达式都为 NULL,则 NULLIF(expr1,expr2) 将返回 0。
- 如果两个表达式相等,则 NULLIF(expr1,expr2) 将返回 NULL。
- Expr1 在 NULLIF(expr1, expr2) 中可以为 NULL
答案:C . NULLIF 函数测试两个项是否相等。如果它们相等,函数返回空值,否则返回测试的两个项中的第一个。NULLIF 函数采用任何数据类型的两个必需参数。语法为 NULLIF(arg1,arg2),其中比较参数 arg1 和 arg2。如果它们相同,则返回 NULL。如果它们不同,则返回 arg1。
22. 选择下面显示的陈述后给出的正确答案。
NULLIF (arg1,arg2)
- Arg1 和 Arg2 可以是不同的数据类型。
- Arg1 和 Arg2 必须相等才能在 NULLIF 函数中使用。
- 如果在 NVL 和 NVL2 的情况下使用 NULLIF,则没有数据类型的内部转换。
- 这等效于 CASE WHEN Arg1 = Arg22 THEN NULL ELSE Arg1 END。
答案:D。
23. 检查给定的 EMPLOYEES 表的结构。
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
您需要根据 HR 模式创建一份报告,显示自受聘以来已更换工作的员工。您执行下面给出的查询。
SELECT e.last_name, NULLIF(e.job_id, j.job_id,"Old Job ID") FROM employees e, job_history j WHERE e.employee_id = j.employee_id ORDER BY last_name;
上面给出的查询的结果是什么?
- 当新作业 ID 为 NULL 时,它将显示旧作业 ID。
- 它将成功执行并产生所需的输出。
- 如果新作业 ID 等于旧作业 ID,它将显示新作业 ID
- 它会在执行时抛出 ORA 错误。
答案:D。
24. 下列哪一项不是函数的性质?
- 对数据进行计算
- 转换列数据类型
- 修改单个数据项
- 以上都不是
答案:D.函数可以执行计算、大小写转换和类型转换。
25. 单行函数最适合什么?
- 他们不返回任何值
- 它们每行返回一个结果并对表的所有行进行操作。
- 他们用输入参数每行返回一个结果
- 它们为每组行返回一个结果并对多行进行操作。
答案:B.单行函数总是每行返回一个结果,并且只对单行进行操作;因此,它们被命名为“单排”。
26. 以下哪一种是Oracle SQL 函数的类型?
- 多行函数
- 单列函数
- 单值函数
- 多列功能
答案: A.基本上有两种类型的功能 – 单行和多行功能。
27. 下列哪一种是单行函数?
- VARCHAR2
- 特点
- 长
- NULLIF
答案:B 和D。As Character 和 NULLIF 是单行函数,rest 是数据类型。
28. 多行函数最合适的是什么?
- 它们每行返回多个值。
- 它们为每组行返回一个结果,并且可以操作多组行。
- 它们每行返回一个结果,并且可以操作多组行。
- 它们为每组行返回多个值。
答案:B.多行函数总是作用于一组行并且每组行返回一个值。
29. 以下哪些也称为群函数?
- 单行函数
- 多组功能
- 多行功能
- 单组功能。
答案:C.组函数与多行函数和聚合函数相同。
30. 以下关于单行函数的说法正确的是?
- 它们可以嵌套
- 它们接受参数并返回多个值。
- 他们不能修改数据类型
- 他们不能接受表达式作为参数。
答案:A.单行函数可以嵌套到多个级别。
31. Single Row 函数接受的参数数量是多少?
- 0
- 只有1个
- 只有 2
- 1个或多于1个
答案:D.单行函数可以接受一个或多个参数,具体取决于它们所服务的目标。
32. 以下哪项可以作为单行函数的参数?
- 数据类型
- SELECT 语句
- 表达
- 表名
答案:C。用户提供的常量、变量值、列值和表达式是单行函数的参数类型。
33. 关于字符函数,哪些是正确的?
- 他们只返回字符值
- 他们接受 NUMBER 值
- 它们接受字符参数并且可以返回字符和数字值
- 他们接受所有数据类型的值
答案:C。字符函数 INSTR 接受一个字符串值,但返回字符串中字符的数字位置。
34. 什么是数字函数?
- 它们同时返回 Character 和 Number 值
- 他们不能接受表达式作为输入
- 数字函数不能嵌套。
- 它们接受 Number 参数并只返回 Number 值。
答案:D。
35.下列哪项是DATE类型单行函数返回值的异常?
- 迄今为止
- 系统日期
- MONTHS_BETWEEN
- TO_NUMBER
答案:C。除 MONTHS_BETWEEN 返回数字外,所有 DATE 数据类型函数都将 DATE 作为返回值返回。
36. 下列哪一项不是转换类型的单行函数?
- TO_CHAR
- 迄今为止
- NVL
- TO_NUMBER
答案:C.转换函数将值从一种数据类型转换为另一种数据类型。NVL 函数用替代值替换空值。
37. 以下哪个是大小写转换功能?
- 康卡特
- 子字符串
- 初始化
- 代替
答案: C。CONCAT、SUBSTR 和REPLACE 是字符操作字符函数,而INITCAP、LOWER 和UPPER 是大小写转换字符函数。
38. 以下查询的结果是什么?
SELECT lower('HI WORLD !!!') FROM dual;
- 你好世界 !!!
- 你好世界 !!!
- 你好世界 !!!
- 你好世界 !!!
答案:C . LOWER 函数将字符串转换为小写字符。
39. 以下查询的结果是什么?
SELECT lower(upper(initcap('Hello World') )) FROM dual;
- 你好世界
- 你好世界
- 你好世界
- 你好世界
答案:D.大小写转换字符可以嵌套在 SELECT 查询中。
检查给定的 EMPLOYEES 表的结构并回答后面的问题 40 到 42。
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
40.以下哪个查询会给出与下面给出的查询相同的结果?
SELECT CONCAT(first_name, last_name) FROM employees;
- 从员工中选择名字||姓氏;
- 选择名字||’ ‘ || 姓氏来自员工;
- SELECT last_name||’, ‘||first_name FROM员工;
- SELECT first_name||’,’||last_name FROM员工;
答案: A. CONCAT 函数连接两个字符串,中间没有任何空格。
41. 以下查询的结果是什么?
SELECT 'The job id for '||upper(last_name) ||' is a '||lower(job_id) FROM employees;
- ABEL 的作业 ID 是 sa_rep
- ABEL 的作业 ID 是 sa_rep
- abel 的作业 ID 是 SA_REP
- abel 的作业 ID 是 sa_rep
答案:A。
42. 假设员工的姓氏在表员工中是正确的,那么以下查询的结果是什么?
SELECT employee_id, last_name, department_id FROM employees WHERE last_name = 'smith';
- 它将显示姓氏为 Smith 的员工的详细信息
- 它不会给出任何结果。
- 它将在所有小写字母中提供姓氏为“Smith”的员工的详细信息。
- 在所有 INITCAP 案例中,它将提供姓氏为“Smith”的员工的详细信息。
答案:B.如果雇员表中的姓氏大小写正确,则条件 WHERE last_name = ‘smith’ 将不成立,因此不会显示任何结果。
43. Oracle DB 中的 CONCAT 函数正确的是什么?
- 它只能有字符作为输入。
- 它只能有 2 个输入参数。
- 它可以有 2 个或更多的输入参数
- 默认情况下,它通过在连接的字符串之间放置一个空格来连接值。
答案:B . CONCAT 函数只接受两个 NUMBER 或 VARCHAR2 数据类型的参数。
44. Oracle DB 中的 SUBSTR 函数正确的是什么?
- 它提取一个确定长度的字符串
- 它将字符串的长度显示为数值
- 它找到命名字符的数字位置
- 它从字符串的一侧(或两侧)修剪字符
答案: A. SUBSTR(string, x, y) 函数接受三个参数并返回一个字符串,该字符串由从源字符串中提取的字符数组成,从指定的起始位置 (x) 开始。当 position 为正数时,函数从字符串的开头开始计数,找到第一个字符。当 position 为负数时,函数从字符串的末尾开始倒数。
45. 以下查询的结果是什么?
SELECT length('hi') FROM dual;
- 2
- 3
- 1
- 你好
答案: A. LENGTH 函数只是给出字符串的长度。
46. Oracle DB 中的 LENGTH 和 INSTR 函数有什么区别?
- 当对字符串进行操作时,它们给出相同的结果。
- LENGTH 给出特定字符在字符串中的位置
- INSTR 给出特定字符在字符串中的位置,而 LENGTH 给出字符串的长度。
- LENGTH 和 INSTR 可以互换使用。
答案:C。
47. 检查给定的 EMPLOYEES 表的结构。
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
SELECT upper(&jobid) FROM employees;
- 这会导致错误,因为替换变量不能与单行函数一起使用
- 它会提示用户在每次执行时输入作业 ID,然后以大写形式显示作业 ID
- 它给出了表 EMPLOYEES 中存在的 jobid 而不进行任何更改
- 它不会要求用户输入作业 ID,而是将表中的所有作业 ID 转换为大写
答案:B.替换变量可以与 UPPER 和 LOWER 函数一起使用。
48. Oracle 数据库中的 DUAL 表有哪些错误?
- 它归用户SYS所有,所有用户都可以访问。
- 它只包含一列和一行。
- DUAL 表的 DUMMY 列中的值为“X”
- 当您只想返回一个值一次时,DUAL 表很有用
答案: C。DUAL 表有一个名为 DUMMY 的列和一个值为“X”的行。
49. 以下查询的结果是什么?
SELECT sysdate+4/12 FROM dual;
- 查询产生错误。
- 以日期为结果的日期的小时数。
- Sysdate 算术被忽略。
- 返回系统日期作为结果。
答案:B.可以对 Oracle DB 中的日期执行算术运算。
50. 以下查询的结果是什么?
SELECT lower (100+100) FROM dual;
- 100
- 100+100
- ORA错误
- 200
答案:D.可以在大小写转换函数中指定算术表达式。
51. 如果 SYSDATE = 20-MAY-13,以下查询的结果是什么?
SELECT upper (lower (sysdate)) FROM dual;
- 2013 年 5 月 20 日
- ORA 错误,因为 LOWER 和 UPPER 不能接受日期值。
- 13 年 5 月 20 日
- 13 年 5 月 20 日
答案:C。函数 UPPER 和 LOWER 可以接受日期类型的输入,并且会产生与它们对字符串相同的结果。
52. 以下查询的结果是什么?
SELECT INITCAP (24/6) FROM dual;
- 4
- 24
- 24/6
- 没有结果
答案: A.可以在大小写转换函数中指定算术表达式。
53. 检查此处给出的 EMPLOYEES 表的结构。
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
您需要显示以字母“A”开头的所有员工的姓氏。以下哪个查询会产生所需的结果?
-
SELECT INITCAP (last_name||' works as a '||job_id "Job Description" FROM employees WHERE initcap (last_name) like 'A%';
-
SELECT INITCAP (last_name) ||INITCAP(' works as a: ')|| INITCAP(job_id) "Job Description" FROM employees WHERE initcap (last_name) like 'A %';
-
SELECT INITCAP (last_name||' works as a '||INITCAP(job_id)) "Job Description" FROM employees WHERE initcap (last_name) = 'A';
-
SELECT UPPER (LOWER (last_name||' works as a '||job_id)) "Job Description" FROM employees WHERE lower (last_name) = 'A';
答案:A、B。
54. 假设 SYSDATE 是 20-FEB-13,以下查询的结果是什么?
SELECT CONCAT ('Today is :', SYSDATE) FROM dual;
- 今天是 : 20-feb-13
- 查询抛出不兼容类型参数的错误。
- 今天是:20-Feb-13
- 今天是:20-FEB-13
答案:D . CONCAT 函数接受所有类型的参数。
55. 以下查询的结果模式是什么?
SELECT CONCAT(first_name, CONCAT (last_name, job_id)) FROM dual;
- First_namelast_namejob_id
- 名字、姓氏、工作 ID
- 错误,因为 CONCAT 不能嵌套
- 名字姓氏,工作 ID
答案: A. CONCAT 函数可以与 self 或其他字符函数嵌套。
56. 检查此处给出的 EMPLOYEES 表的结构。
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
您需要生成一份报告,其中显示部门 100 中所有员工的名字、姓氏和工资。报告应以“Andy Smith 收入 50000”的形式显示结果。以下哪个查询将提供所需的输出?
-
SELECT concat (first_name,concat (' ', concat(last_name, concat(' earns ', SALARY)))) Concat_String FROM employees WHERE department_id = 100;
-
SELECT concat (first_name, last_name||' '|| salary) FROM employees WHERE department_id = 100;
-
SELECT concat (first_name, concat(last_name, ' '))||earns||salary FROM employees WHERE department_id = 100;
-
SELECT concat (first_name, concat(last_name, 'earns salary') FROM employees WHERE department_id = 100;
答案: A. CONCAT 函数可以与 self 或其他字符函数嵌套。
57. 以下查询将显示什么结果?
SELECT LENGTH('It is a lovely day today!') FROM dual;
- 25
- 19
- 20
- 0
答案: A. LENGTH 函数也计算空格、制表符和特殊字符。
58. 您需要显示 COUNTRIES 表中的国家/地区名称。国家名称的长度应大于 5 个字符。以下哪个查询将提供所需的输出?
-
SELECT country_name FROM countries WHERE LENGTH (country_name)= 5;
-
SELECT country_name FROM countries WHERE length (country_name)> 5;
-
SELECT SUBSTR(country_name, 1,5) FROM countries WHERE length (country_name)< 5;
-
SELECT country_name FROM countries WHERE length (country_name) <> 5;
答案:B . LENGTH 函数可以在 WHERE 子句中使用。
59、LPAD函数对字符串的作用如何?
- 它将字符串与列的左侧对齐
- 它返回一个用指定数量的字符填充到源字符串右侧的字符串
- 它将字符串与列的左侧对齐,将数字字符串与列的右侧对齐
- 它返回一个用指定数量的字符填充到源字符串左侧的字符串
答案:D . LPAD(string, length after padding, padding string) 和 RPAD(string, length after padding, padding string) 函数在字符串的左边或右边添加一个填充字符串,直到达到指定长度后填充。
60. 下列关于 LPAD 和 RPAD 功能的选项中哪些是正确的?
- 用于填充的字符串仅包括字符。
- 用于填充的字符串仅包括文字
- 用于填充的字符串不能包含表达式。
- 用于填充的字符串包括文字、字符和表达式。
答案:D。
61. LPAD 和 RPAD 函数中输入参数的最大数量是多少?
- 1
- 2
- 3
- 0
答案:C. LPAD 和 RPAD 最多使用 3 个参数。如果给出了 2 个参数,则填充由空格发生。
62. 以下查询的结果是什么?
SELECT lpad (1000 +300.66, 14, '*') FROM dual;
- *******1300.66
- 1300*******
- 1300.66
- ****1300.66
答案: A.为了使总长度为 14 个字符,返回值 1300.66 在左侧填充了 7 个星号 (*)。
63. 关于 TRIM 功能,正确的是什么?
- 类似于 Oracle 中的 SUBSTR 函数
- 它从字符文字、列或表达式的开头或结尾删除字符
- TRIM 函数不能应用于表达式和 NUMBERS
- TRIM 函数只能删除字符串两侧的字符。
答案:B . TRIM 函数从给定的源字符串中从字面上修剪掉前导或尾随(或两者)字符串。TRIM 函数后跟 TRAILING 或 LEADING 关键字时,可以从字符串的一侧或两侧删除字符。
64. 您需要删除出现的字符“.” 以及来自表 MAGAZINE 中一本书的以下书名的双引号 ‘”‘。
"HUNTING THOREAU IN NEW HAMPSHIRE" THE ETHNIC NEIGHBORHOOD."
以下哪个查询会给出所需的结果?
-
SELECT LTRIM(Title,'"') FROM MAGAZINE;
-
SELECT LTRIM(RTRIM(Title,'."'),'"') FROM MAGAZINE;
-
SELECT LTRIM (Title,'"THE') FROM MAGAZINE;
-
SELECT LTRIM(RTRIM(Title,'."THE'),'"') FROM MAGAZINE;
答案:B . LTRIM 和 RTRIM 函数可以相互组合使用。
65. 以下查询的结果将返回什么?
SELECT INSTR('James','x') FROM dual;
- 1
- 2
- 0
- 3
答案:C.当给定字符串中不存在搜索字符串时,INSTR 函数返回 0。
66. 以下查询的结果是什么?
SELECT INSTR('1$3$5$7$9$','$',3,4)FROM dual;
- 2
- 10
- 7
- 4
答案:B. INSTR 函数从第 3 位开始搜索第 4 次出现的 ‘$’。
67. 以下查询的结果是什么?
SELECT INSTR('1#3#5#7#9#', -3,2) FROM dual;
- #5
- #3
- #7
- #9
答案:D. SUBSTR 函数将从字符串末尾开始搜索 3 个位置,并在正向给出 2 个字符,给出 #9。
检查下面给出的 EMPLOYEES 表的结构,并回答后面的问题 68 和 69。
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
68. 您需要根据 EMPLOYEES 表中的 SALARY 列提取一致的 15 个字符的字符串。如果 SALARY 值的长度小于 15 个字符,则必须在该值的左侧添加零以生成 15 个字符的字符串。哪个查询将满足此要求?
-
SELECT rpad(salary, 15,0) FROM employees;
-
SELECT lpad(salary,15,0) FROM employees;
-
SELECT ltrim(salary,15,0) FROM employees;
-
SELECT trim(salary,15,0) FROM employees;
答案:B . LPAD 和 RPAD 函数在字符串的左边或右边添加一个填充字符串,直到填充后达到指定的长度。
69. 您需要在不使用 LENGTH 函数的情况下显示 EMPLOYEES 表中 FIRST_NAME 列的最后 2 个字符。以下哪个查询可以满足此要求?
-
SELECT SUBSTR(first_name, 2) FROM employees;
-
SELECT SUBSTR(first_name, -2) FROM employees;
-
SELECT RTRIM(first_name, 2) FROM employees;
-
SELECT TRIM(first_name, 2) FROM employees;
答案:B . SUBSTR(string, x, y) 函数接受三个参数并返回一个字符串,该字符串由从源字符串中提取的字符数组成,从指定的起始位置 (x) 开始。当 position 为正数时,函数从字符串的开头开始计数,找到第一个字符。当 position 为负数时,函数从字符串的末尾开始倒数。
70. 假设 SYSDATE 是 13-JUN-13,以下查询的结果是什么?
SELECT SUBSTR(sysdate,10,7) FROM dual;
- 3
- N-13
- 0
- 无效的
答案:D。该查询将给出一个 NULL,因为 SYSDATE 中开始的位置 10 不存在。
71. 以下哪一项用于替换 Oracle DB 中给定字符串中的特定字符?
- LTRIM
- 修剪
- 中转
- 代替
答案:D。
72. 以下查询的结果是什么?
SELECT replace(9999.00-1,'8',88) FROM dual;
- 999
- 9998
- 99988
- 9999.88
答案: C。REPLACE 函数在 9998 中搜索“8”并将其替换为“88”。
73. 检查此处给出的 EMPLOYEES 表的结构。
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
您需要检索名字、姓氏(以空格分隔)和员工的正式名称,其中名字和姓氏的总长度超过 15 个字符。正式名称由名字的第一个字母和姓氏的前 14 个字符组成。以下哪个查询将满足此要求?
-
SELECT first_name, last_name ,SUBSTR(first_name, 1,1)||' '||SUBSTR(last_name, 1,14) formal_name FROM employees;
-
SELECT first_name, last_name ,SUBSTR(first_name, 1,14)||' '||SUBSTR(last_name, 1,1) formal_name FROM employees WHERE length (first_name) + length(last_name) < 15;
-
SELECT first_name, last_name ,SUBSTR(first_name, 1,1)||' '||SUBSTR(last_name, 1,14) formal_name FROM employees WHERE length (first_name) + length(last_name) =15;
-
SELECT first_name, last_name ,SUBSTR(first_name, 1,1)||' '||SUBSTR(last_name, 1,14) formal_name FROM employees WHERE length (first_name) + length(last_name) > 15;
答案:D。
74. 以下查询的结果是什么?
SELECT round(148.50) FROM dual;
- 148.50
- 140
- 150
- 149
答案:D.如果没有小数精度,默认的四舍五入度为 0,源四舍五入到最接近的整数。
75. 假设 sysdate 是 10-JUN-13,以下查询的结果是什么?
SELECT trunc (sysdate,'mon') FROM dual;
- 10-JUN-13
- 1-JUN-13
- ORA 错误,因为 TRUNC 函数在与日期一起使用时不能有输入参数。
- 13 年 6 月 31 日
答案:B . 日期被截断到月份的第一天。同样,它也可以在一年内完成。
76. 以下查询的结果是什么?
SELECT trunc(1902.92,-3) FROM dual;
- 2000年
- 1000
- 1901年
- 1901.00
答案:B。
77、Oracle DB中MOD函数的语法是什么?
- Mod(除数,股息)
- MOD(除数,1)
- MOD(股息,除数)
- 以上都不是
答案:C . MOD 函数用于获得除法运算的余数。
78. 以下查询的结果是什么?
SELECT mod(100.23,-3) FROM dual;
- ORA错误
- 1.23
- 100
- 0
答案:B . MOD 函数对正除数和负除数给出相同的答案。
79. 以下哪些函数用于区分 Oracle DB 中的偶数或奇数?
- 圆形的
- 中转
- 国防部
- 代替
答案:C . MOD 函数可用于检查给定的数字是偶数还是奇数。如果 MOD (num,2) 返回零,则数字 ‘num’ 是偶数。如果 MOD (num,2) 返回 1,则数字 ‘num’ 为奇数。
80. 检查 EMPLOYEES 表的结构,如下所示。
SQL> DESC employees Name Null? Type ----------------------- -------- ---------------- EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) PHONE_NUMBER VARCHAR2(20) HIRE_DATE NOT NULL DATE JOB_ID NOT NULL VARCHAR2(10) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4)
您需要以循环方式将前 12 名员工分配到四个团队之一。员工 ID 以 100 开头。以下哪个查询将满足要求?
-
SELECT * FROM employees WHERE employee_id between 100 and 111 ORDER BY employee_id;
-
SELECT first_name, last_name, employee_id, mod(employee_id, 4) Team# FROM employees WHERE employee_id between 100 and 111 ORDER BY employee_id;
-
SELECT first_name, last_name,mod(employee_id, 2) Team# FROM employees WHERE employee_ID <> 100;
-
SELECT first_name, last_name, mod(employee_id, 4) Team# FROM employees WHERE employee_ID = 100;
答案:B。
81. 以下查询的结果是什么?
SELECT SUBSTR('Life is Calling',1) FROM dual;
- ORA 错误,因为 SUBSTR 函数应至少有 3 个参数。
- 生活在召唤
- 无效的
- 生活
答案:B.仅使用前两个参数调用 SUBSTR 函数会导致该函数从给定源字符串的开始位置到结尾提取字符串。
82. SQL Developer 中 sysdate 的默认数据格式是什么?
- DD-MON-YY
- DD-MON-RR
- 日/月/日
- DD/MON/YYYY
答案:C。对于 SQL*PLUS,默认日期格式是 DD-MON-RR。
83. 假设 SYSDATE 为 10-JUN-2013 12:05pm,执行以下查询后返回什么值?
SELECT add_months(sysdate,-1) FROM dual;
- 2013 年 5 月 9 日下午 12:05
- 2013 年 5 月 10 日下午 12:05
- 2013 年 7 月 10 日下午 12:05
- 2013 年 7 月 9 日下午 12:05
答案:B . ADD_MONTHS(date, x) 函数将“x”个日历月添加到给定日期。‘x’ 的值必须是整数并且可以是负数。
84.执行以下语句后会返回什么值?请注意,01-JAN-2013 发生在星期二。
SELECT next_day('01-JAN-2013','friday') FROM dual;
- 2013 年 1 月 2 日
- 星期五
- 2013 年 1 月 4 日
- 以上都不是
答案:C . NEXT_DAY(date,’day’) 查找日期之后的下一个指定的星期 (‘day’) 的日期。char 的值可以是表示一天的数字或字符串。
85. ROUND 函数最多可以接受多少个参数?
- 0
- 1
- 2
- 3
答案:C。如果只存在一个参数,则舍入到最近的整数
86. 假设当前日期是 02-JUN-2007,DD-MON-RR 格式的日期 24-JUL-2004 将返回什么世纪?
- 19
- 21
- 20
- 无效的
答案:C。如果当前年份和指定年份的两位数在 0 到 49 之间,则返回当前世纪。
87. 假设当前日期是 02-JUN-2007,DD-MON-RR 格式的日期 24-JUL-94 将返回哪个世纪?
- 19
- 21
- 20
- 无效的
答案: A.如果当前年份的两位数在 0 到 49 之间,并且指定年份在 50 到 99 之间,则返回上一个世纪。
88. 假设当前日期是 02-JUN-1975,DD-MON-RR 格式的日期 24-JUL-94 将返回哪个世纪?
- 19
- 21
- 20
- 无效的
答: A.如果当前和指定年份的两位数在 50 到 99 之间,则默认返回当前世纪。
89. 假设当前日期是 02-JUN-1975,DD-MON-RR 格式的日期 24-JUL-07 将返回哪个世纪?
- 19
- 21
- 20
- 无效的
答案:C.如果当前年份的两位数在 50 到 99 之间,并且指定年份在 0 到 49 之间,则返回下一个世纪。
90. SYSDATE 函数需要多少个参数?
- 1
- 2
- 4
- 0
答案:D . SYSDATE 是 Oracle 中的伪列。
91. Oracle DB 中的 SYSDATE 函数正确的是什么?
- 它只返回系统日期
- 它至少需要 2 个参数。
- 默认格式为 DD-MON-YY
- SYSDATE 的默认格式是DD-MON-RR,它根据数据库服务器返回系统的日期和时间。
答案:D。
92. 以下操作的结果的数据类型是什么?
“日期 3 = 日期 1-日期 2”
- 日期
- 数字1
- 0
- 无效的
答案:B . 两个日期相减得到天数。
93. 以下操作的结果的数据类型是什么?
“Date2 = Date1-Num1”
- 日期
- 数字1
- 0
- 无效的
答案: A.从日期值中减去一个数字会得到日期。
94. Oracle DB 中两个日期之间的差异代表什么?
- 他们之间的天数
- Oracle DB 中不可能存在日期差异
- 一个约会
- 无效的
答案:A。
95. 以下查询的结果是什么?
SELECT months_between('21-JUN-13','19-JUN-13') FROM dual;
- ORA错误
- 一个正数
- 负数
- 0
答案:C。如果第一个参数小于第二个参数,则 MONTHS_BETWEEN 返回负数。
96. 如果 MONTHS_BETWEEN (start_date,end_date) 函数的结果是一个分数,可以推导出什么?
- 它表示开始日期和结束日期之间的数字差异。
- 结果不能是小数,必须是整数。
- 无效的
- 它表示计算年和月之间的整数差后剩余的天数和时间,并且基于 31 天的月份。
答案:D。
97. 您从印度连接到瑞士的远程数据库。您需要从数据库中找到印度当地时间。以下哪项将给出所需的结果?
-
SELECT sysdate FROM dual;
-
SELECT round(sysdate) FROM dual;
-
SELECT trunc (sysdate) FROM dual;
-
SELECT current_date FROM dual;
答案:D。
98. 以下查询的结果是什么?
SELECT months_between (to_date ('29-feb-2008'), to_date ('29-feb-2008 12:00:00','dd-mon-yyyy hh24:mi:ss'))*31 FROM dual;
- 大约 0
- 1
- 查询会抛出 ORA 错误
- 0.5 天
答案:D . MONTHS_BETWEEN(date1, date2) 查找 date1 和 date2 之间的月数。结果可以是正面的或负面的。如果 date1 晚于 date2,则结果为正;如果 date1 早于 date2,则结果为负数。结果的非整数部分代表月份的一部分。
99. 以下查询的结果是什么?
SELECT add_months ('31-dec-2008',2.5) FROM dual;
- 2009 年 2 月 31 日
- 2009 年 2 月 28 日
- 2009 年 3 月 31 日
- 2009 年 1 月 15 日
答案:B . 2.5 的小数部分将被忽略,并且 2 个月将被添加到 31-dec-2012,即 31-feb-2013 但由于它不是一个有效日期,结果是 28-feb-2009。
100. 您需要确定支付员工工资的 11 月日期。奖金在 11 月的最后一个星期五支付。以下哪项将满足要求?
-
SELECT next_day ('30-nov-2012' , 'Friday') FROM dual;
-
SELECT next_day ('30-nov-2012' , 'Friday') -7 FROM dual;
-
SELECT last_day ('01-nov-2012' ) FROM dual;
-
SELECT next_day ('30-nov-2012' , 'sat') -1 FROM dual;
答案:B . NEXT_DAY(date,’day’) 和 LAST_DAY (date,’day’) 函数查找日期之后的下一个或最后一个指定的星期 (‘day’) 的日期。char 的值可以是表示一天的数字或字符串。