- SQL 认证学习资料
- SQL - 简介
- SQL - SQL 考试大纲
- SQL - SQL SELECT 语句
- SQL - 限制和排序数据
- SQL - 使用单行函数
- SQL - 条件表达式
- SQL - 使用组函数
- SQL - 从多个表中获取数据
- SQL - 使用子查询解决查询
- SQL - 使用集合运算符
- SQL - 数据操作
- SQL - 使用 DDL 语句
- SQL - 创建其他模式对象
- SQL 认证题库
- SQL - SQL SELECT 语句
- SQL - 限制和排序数据
- SQL - 使用单行函数
- SQL - 转换函数
- SQL - 条件表达式
- SQL - 使用组函数
- SQL - 从多个表中获取数据
- SQL - 使用子查询解决查询
- SQL - 使用集合运算符
- SQL - 数据操作
- SQL - 使用 DDL 语句
- SQL - 创建其他模式对象
- SQL 认证模拟考试
- SQL 认证 - 模拟考试
- SQL 认证有用资源
- SQL 认证 - 有用资源
- SQL 认证 - 讨论
SQL - 条件表达式问题
1. 关于 Oracle 数据库中的数据类型,哪个说法是正确的?
- 它们用于对列进行排序。
- 它们用于在表中对列进行结构化表示。
- 它们用于限制列可以存储的数据类型。
- 它们不是必需的。
答案:C. 数据类型定义列在表中可以存储的数据类型。一个列只能存储一种类型的数据。Oracle 中主要的数据类型包括 NUMBER、VARCHAR2 和 DATE。
2. 关于嵌套函数,哪个说法是正确的?
- 在 Oracle 数据库中,嵌套函数的使用次数限制为 5 次。
- 它们从最外层到最内层进行评估。
- 它们从最内层到最外层进行评估。
- 嵌套表达式中的所有函数都返回相同的数据类型。
答案:C. 单行函数和组函数可以在 SELECT 查询中嵌套,其中最内层的函数首先执行。最内层函数的执行结果作为外层函数的输入。
3. 以下哪个函数简化了处理可能包含空值列的操作?
- 嵌套函数
- 通用函数
- 条件函数
- 以上都不是
答案:B. 通用函数如 NVL、NVL2、NULLIF 和 COALESCE 用于在显示查询结果时消除 NULL 的影响。它们通过分配替代值来绕过 NULL 值。
4. 以下哪些数据类型适用于通用函数?
- VARCHAR2
- NUMBER
- DATE
- 所有数据类型
答案:D. 通用函数通常与所有主要数据类型(如 NUMBER、VARCHAR2 和 DATE)兼容。
5. 关于 COALESCE 函数,哪个说法是正确的?
- 它接受至少 2 个,最多 5 个输入参数。
- 它始终返回输入参数中的第一个 NULL 值。
- 它可以接受无限数量的输入参数。
- 它返回第一个非空参数,否则返回空值。
答案:C, D. COALESCE 函数需要两个必填参数,以及任意数量的可选参数。语法为 COALESCE(expr1, expr2,Ö,exprn),其中如果 expr1 不为空,则返回 expr1,否则如果 expr2 不为空,则返回 expr2,依此类推。COALESCE 是 NVL 函数的通用形式,如下两个等式所示:COALESCE(expr1,expr2) = NVL(expr1,expr2),COALESCE(expr1,expr2,expr3) = NVL(expr1,NVL(expr2,expr3))
6. NVL 函数需要多少个必填输入参数?
- 0
- 1
- 2
- 3
答案:C. NVL 函数需要两个必填参数。其语法为 NVL(original, ifnull),其中 original 表示要测试的项,ifnull 表示如果 original 项计算结果为空则返回的结果。original 和 ifnull 参数的数据类型必须始终兼容。它们必须具有相同的类型,或者必须能够将 ifnull 隐式转换为 original 参数的类型。NVL 函数返回与 original 参数具有相同数据类型的返回值。
7. 以下语句中哪个地方错了?
NVL (ifnull, original)
- 没有错误。
- 参数 original 不是必需的。
- 参数 'ifnull' 不是必需的。
- 正确的语句是 NVL (original,ifnull)。
答案:D. NVL 函数评估任何数据类型的列或表达式是否为空。如果该项为空,则返回一个非空替代值;否则,返回初始项。
8. 以下查询的输出是什么?
SELECT NVL(1234) FROM dual;
- 1234
- 1000
- NULL
- ORA-00909:无效的参数数量错误
答案:D. NVL 函数需要两个必填参数。其语法为 NVL(original, ifnull),其中 original 表示要测试的项,ifnull 表示如果 original 项计算结果为空则返回的结果。
9. 以下查询的输出是什么?
SELECT NVL(1234,' ') FROM dual;
- 一个空格,即 ' '
- 1234
- NULL 值
- ORA-01722: 无效数字
答案:D. original 和 ifnull 参数的数据类型必须始终兼容。它们必须具有相同的类型,或者必须能够将 ifnull 隐式转换为 original 参数的类型。NVL 函数返回与 original 参数具有相同数据类型的返回值。1234 应该用单引号括起来。在这种情况下不会发生数据类型的隐式转换。
10. 以下查询的结果是什么?
SELECT NVL(SUBSTR('abc',-4),'SUBSTR didn't work') FROM dual;
- abc
- bc
- c
- SUBSTR 不起作用
答案:D。
11. 您需要提取一份报告,该报告显示部门 100 中所有员工的姓名、姓氏和获得的佣金百分比。报告中不应包含任何空列。如果列没有值,则所有列都应至少包含“0”。以下哪个查询可以满足此要求?(考虑给定的表结构)
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, last_name, commission_pct*salary FROM employees WHERE department_id = 100;
SELECT first_name, last_name, NVL(commission_pct*salary,0) monthly_commission FROM employees WHERE department_id = 100;
SELECT first_name, last_name, NVL(commission_pct,0)*salary monthly_commission FROM employees WHERE department_id = 100;
SELECT first_name, last_name, commission_pct*salary FROM employees;
答案:B, C。
12. Oracle 数据库中的数据转换类型有哪些?
- 隐式转换
- 显式转换
- 外部转换
- 物理转换
答案:A, B. TO_CHAR、TO_NUMBER 和 TO_DATE 是三种最常用的转换函数,并进行了详细讨论。TO_CHAR 函数将数字和日期信息转换为字符,而 TO_NUMBER 和 TO_DATE 分别将字符数据转换为数字和日期。
13. 在 Oracle 数据库中,隐式转换时会发生什么?
- Oracle 数据库将一种数据类型隐式转换为期望的数据类型。
- 用户必须将数据类型转换为期望的数据类型。
- Oracle 数据库不转换任何数据类型。
- 隐式转换可以由用户控制。
答案:A. 如果 Oracle 数据库将值隐式转换为兼容的数据类型,则称为隐式转换。
14. 在 Oracle 数据库中,显式转换时会发生什么?
- Oracle 数据库将一种数据类型转换为另一种数据类型,并显式地显示给用户。
- Oracle 数据库提示用户将一种数据类型转换为另一种数据类型,然后转换数据类型。
- 用户使用 Oracle 数据库提供的转换函数来转换数据类型。
- Oracle 数据库中从不显式转换数据类型。
答案:C. 当程序员必须使用某个转换函数以编程方式转换值时,称为显式转换。
15. 以下哪种转换方法建议用于提高 Oracle 数据库中 SQL 语句的可靠性?
- 隐式和显式转换
- 隐式转换
- 显式转换
- 以上都不是
答案:C. TO_CHAR、TO_NUMBER 和 TO_DATE 是三种最常用的转换函数,并进行了详细讨论。TO_CHAR 函数将数字和日期信息转换为字符,而 TO_NUMBER 和 TO_DATE 分别将字符数据转换为数字和日期。
16. 以下哪个是 Oracle 执行的有效隐式转换?
- NUMBER 到 VARCHAR2
- NUMBER 到 DATE
- CHAR 到 DATE
- DATE 到 VARCHAR2
答案:A, D。
17. 检查给定的 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 FROM employees WHERE hire_date > '01-JAN-13';
- 没有发生转换,此查询导致 ORA 错误。
- 显式转换
- 隐式转换
- 隐式和显式转换。
答案:C. Oracle 会将字符串(VARCHAR2 或 CHAR)隐式转换为 DATE,从而提供所需的输出。
18. 关于表达式求值,Oracle 数据库支持以下哪些内容?
- NUMBER 到 CHAR
- DATE 到 VARCHAR2
- CHAR 到 DATE
- NUMBER 到 DATE
答案:A, B. DATE 和 NUMBER 值可以轻松转换为其字符等效项。当字符字符串符合以下日期模式时,可以进行隐式字符到日期的转换:[D|DD] 分隔符 1 [MON|MONTH] 分隔符 2 [R|RR|YY|YYYY]。
19. 为了使 Oracle 中 CHAR 到 NUMBER 的隐式转换正常工作,必须满足什么条件?
- 此类转换没有特别的要求。
- 字符字符串必须表示有效的数字。
- Oracle 不支持此类转换。
- CHAR 到 NUMBER 只能显式转换。
答案:B. 字符数据必须表示有效的数字才能被视为隐式转换。
20. 以下哪个表达式可以显式用于将 CHAR 转换为 NUMBER?
- TO_CHAR
- 使用 TO_DATE,然后将日期转换为 NUMBER。
- TO_NUMBER
- 此类转换不可行。
答案:C. TO_NUMBER 函数返回类型为 NUMBER 的项。转换为数字的字符字符串必须格式正确,以便任何非数字组件都使用适当的格式掩码进行转换或去除。
21. 以下哪个表达式可以显式用于将 NUMBER 转换为 CHAR?
- TO_CHAR
- 使用 TO_DATE,然后将日期转换为 NUMBER。
- TO_NUMBER
- 此类转换不可行。
答案:A. TO_CHAR 函数返回数据类型为 VARCHAR2 的项。当应用于类型为 NUMBER 的项时,可以使用多种格式选项。
22. 以下哪个表达式可以显式用于将 CHAR 转换为 DATE?
- TO_CHAR
- 使用 TO_DATE,然后将日期转换为 NUMBER。
- TO_NUMBER
- TO_DATE
答案:D. TO_DATE 函数返回类型为 DATE 的项。转换为日期的字符字符串可以包含构成 DATE 的所有或仅部分日期时间元素。当仅使用部分日期时间元素的字符串进行转换时,Oracle 会提供默认值来构建完整的日期。使用格式模型或掩码将字符字符串的组件与不同的日期时间元素关联。
23. 以下哪个表达式可以显式用于将 DATE 转换为 CHAR?
- TO_CHAR
- TO_DATE
- TO_NUMBER
- 此类转换不可行。
答案:A. TO_CHAR 函数返回数据类型为 VARCHAR2 的项。当应用于类型为 NUMBER 的项时,可以使用多种格式选项。
24. 以下哪些是 Oracle 提供的用于将一种数据类型显式转换为另一种数据类型的函数?
- TO_CHAR
- TO_DATE
- TO_NUMBER
- 以上所有
答案:D. TO_CHAR、TO_NUMBER 和 TO_DATE 是三种最常用的转换函数,并进行了详细讨论。TO_CHAR 函数将数字和日期信息转换为字符,而 TO_NUMBER 和 TO_DATE 分别将字符数据转换为数字和日期。
25. 解释以下函数的工作原理。
TO_CHAR(number/date, [format], [nlsparameters])
- 它将 VARCHAR2 转换为 CHAR。
- 它使用格式模型 [format] 将数字/日期转换为 VARCHAR2 字符串。
- 它将 VARCHAR2 转换为 NUMBER 或 DATE。
- [NLSPARAMETERS] 在语句中是必需的。
答案:B. TO_CHAR 函数返回数据类型为 VARCHAR2 的项。当应用于类型为 NUMBER 的项时,可以使用多种格式选项。
26. 以下语句中的 [NLSPARAMETERS] 子句指定什么?
TO_CHAR(number/date, [format], [nlsparameters])
- 小数字符
- 组分隔符
- 货币符号
- 以上所有
答案:D。
27. 如果省略了 [nlsparameters] 参数,TO_CHAR (number/date, [format], [nlsparameters]) 函数将使用什么值?
- 它会抛出一个 ORA 错误。
- [nlsparameters] 参数是必须的,不能省略。
- 它将使用会话的默认参数值。
- 它将使用数据库设计期间设置的默认参数值。
答案:C. 默认情况下,TO_CHAR 函数会考虑当前活动会话的 NLS 设置。
28. 关于以下语句,哪个说法是正确的?
TO_CHAR(number/date, [format], [nlsparameters])
- nlsparameters 参数指定返回月份和日期名称的语言。
- 在执行上述语句时,省略了 nlsparameters 参数。
- 无论是否指定,nlsparameters 参数都将返回 NULL。
- nlsparameters 参数将在每次执行时返回数据库的默认语言。
答案:A.
29. 关于 Oracle 数据库中的以下语句,哪个说法是正确的?
TO_NUMBER(char, [format],[nlsparameters])
- 它将任何字符串转换为 [format] 中指定的格式的数字。
- 它仅将 NUMBER 转换为 [format] 中提到的所需格式。
- 它将包含数字的字符串转换为 [format] 中指定的格式的数字。
- 此函数的结果始终是字符。
答案:C. TO_NUMBER 函数返回类型为 NUMBER 的项。转换为数字的字符字符串必须格式正确,以便任何非数字组件都使用适当的格式掩码进行转换或去除。
30. 关于 Oracle 数据库中的以下语句,哪个说法是正确的?
TO_DATE(char, [format],[nlsparameters])
- 它将任何字符串转换为 [format] 中指定的格式的日期。
- 它仅将 DATE 转换为 [format] 中提到的所需格式的另一个 DATE。
- 它将包含日期的字符串转换为 [format] 中指定的格式的数字。
- 它将包含日期的字符串转换为 [format] 中指定的格式的日期。
答案:C. TO_DATE 函数返回 DATE 类型的值。转换为日期的字符串可以包含构成 DATE 的所有或只是一部分日期时间元素。
31. 如果省略以下语句中的 [format] 参数,结果将是什么?
TO_DATE(char, [format],[nlsparameters])
- 它将返回格式为 DD-MON-YY 的 DATE 值。
- 它将返回格式为 DD-MON-RR 的 DATE 值。
- 它将返回字符值。
- 它将返回 NUMBER 值。
答案:A.
32. 关于 Oracle 数据库中的以下语句,以下哪个说法是正确的?
TO_CHAR(date, 'frmt')
- fmt 可以用双引号或单引号括起来。
- 此函数中 fmt 的大小写无关紧要。
- Fmt 可以包含任何字符或数字。
- fmt 必须用单引号括起来,并且必须是有效的日期格式。
答案:D。
33. 执行以下语句将产生什么结果?
SELECT TO_CHAR ('01-JAN-13' 'DD-MON-YY') FROM dual;
- 01-JAN-13
- 01-01-2013
- 一个 ORA 错误
- 1-JAN-13
答案:C. 参数 '01-JAN-13' 和格式模型之间应该用逗号分隔。
34. 关于以下语句中的 [fmt] 参数,哪个说法是正确的?
TO_DATE ([date as string],[format])
- fmt 可以用双引号或单引号括起来。
- 此函数中 fmt 的大小写无关紧要。
- [fmt] 参数有一个 'fm' 元素,它可以删除空格并抑制前导零。
- Fmt 可以包含任何字符或数字。
答案:C.
35. Oracle 数据库中 FM 修饰符的缩写是什么?
- First Move(首移动)
- Filter Mode(过滤器模式)
- Fill Mode(填充模式)
- First Mode(首模式)
答案:C. 格式模型 'fm' 代表 Fill Mode(填充模式)。
36. Oracle 数据库中 FX 修饰符的缩写是什么?
- First Expression(首表达式)
- Fill Expression(填充表达式)
- First Extra(首额外)
- Format Exact(格式精确)
答案:D. 格式模型 'fm' 代表 Format Exact(格式精确)。
37. 在以下语句中,Oracle 数据库将为 Month 元素分配多少个最大显示位置?
SELECT TO_CHAR (sysdate, 'fmMonth') FROM dual;
- 5
- 6
- 7
- 9
答案:D. Month 元素的最长单词是“September”(九月),因此 Oracle 会根据 9 个位置进行填充,以便显示 Month 参数。
38. 关于 Oracle 数据库中的 FM 修饰符,以下哪个说法是正确的?
- 此修饰符会抑制后续字符元素(如 MONTH)中的空格填充。
- 此修饰符会抑制后续数字元素(如 MI)的前导零。
- 此修饰符对日期格式没有影响。
- 此修饰符对于与 TO_CHAR 函数一起使用的所有日期格式都是必须的。
答案:A,B。
39. 当在 Oracle 数据库中的 DATE 格式模型中不使用 FM 修饰符时会发生什么情况?
- 字符元素的结果将在左侧用空格填充到可变长度。
- 字符元素的结果将在右侧用空格填充到固定长度。
- 字符元素的结果中不会返回前导零。
- 如果使用 FM 修饰符,则返回值的长度是固定的。
答案:B。
40. 当使用 FM 修饰符时,TO_CHAR 函数的数字格式元素中的数字结果如何在输出缓冲区中对齐?
- 右对齐
- 左对齐
- 居中对齐
- 以上都不是
答案:B. FM 修饰符会抑制添加到数字左侧的空格。
41. 以下查询的结果是什么?
SELECT TO_CHAR (TO_DATE('01-JAN-13'), 'fmDD Month YYYY') FROM dual;
- 1 January2013
- 1 January 2013
- 1 Jan 2013
- 1 January 13
答案:B. TO_CHAR 函数根据给定的格式模型格式化输入日期。
42. 将在以下查询的 'DD' 中添加多少个空格?
SELECT TO_CHAR (TO_DATE('01-JAN-13','DD-MON-YY'), 'fmDD Month YYYY') FROM dual;
- 0
- 1
- 2
- 3
答案:A. FM 修饰符会删除日期格式中所有填充的空格。
43. 以下查询的结果是什么?
SELECT TO_CHAR (TO_DATE('01-JAN-13','DD-MON-YY'), 'fmDdspth "of" Month YYYY fmHH:MI:SS AM') FROM dual;
- 由于在日期格式中使用了双引号,它将返回一个 ORA 错误。
- 1st January 2013
- First of JANUARY 2013 12:00:00 AM
- First of January 2013 12:00:00 AM
答案:D. TO_CHAR 函数根据给定的格式格式化输入日期 '01-JAN-13'。
44. 以下哪个选项指定了 TO_DATE 函数的字符参数和日期格式模型的完全匹配?
- TO_DATE
- TO_CHAR
- FM
- FX
答案:D。
45. 关于 Oracle 数据库中的 FX 修饰符,哪个说法是正确的?
- 它是区分大小写的。
- 在与提到的日期格式模型匹配时,它会忽略字符参数中的空格。
- 字符参数中的标点符号和带引号的文本不一定与格式模型匹配。
- 以上都不是
答案:D。
46. 以下查询的结果是什么?
SELECT TO_DATE ('January 21, 2013' , 'fxMonth DD, YYYY') FROM dual;
- 它将成功执行。
- 它将返回结果 January 21, 2013。
- 它会产生一个 ORA 错误。
- 它将返回结果 JANUARY 21, 2013。
答案:C. 如果使用 FX,则字符参数必须与格式模型完全匹配。这里 January 后面的额外空格不匹配。
47. 关于 Oracle 数据库中的 FX 修饰符,哪个说法是正确的?
- 它可以与 TO_CHAR 一起使用。
- 它可以与 TO_CHAR 和 TO_DATE 一起使用。
- 它只能与 TO_DATE 一起使用。
- 以上都不是
答案:C. FX 格式修饰符只能与 TO_DATE 函数一起使用。
48. 假设 SYSDATE 为 01-JAN-13,以下查询的结果是什么?
SELECT TO_CHAR (SYSDATE, 'DDTH') FROM dual;
- 1st of January
- 1st
- 1 ST
- 01ST
答案:D。
49. 假设 SYSDATE 为 01-JAN-13,以下查询的结果是什么?
SELECT TO_CHAR (SYSDATE, 'fmDDTH') FROM dual;
- 1st of January
- 1st
- 1ST
- 01ST
答案:C.
50. 假设 SYSDATE 为 01-JAN-13 且是星期二,以下查询的结果是什么?
SELECT TO_CHAR (SYSDATE, 'fmDay')||'''s Meeting' FROM dual;
- Tuesday
- TUESDAY
- TUESDAY's Meeting
- Tuesday's Meeting
答案:D。
51. 以下查询的结果是什么?
SELECT TO_DATE('01 / JAN / 13','DD-MON-YY') FROM dual;
- ORA 错误
- 01-JAN-2013
- 01-JANUARY-13
- 01-JAN-13
答案:D。
52. 以下查询的结果是什么?
SELECT TO_DATE('01 ## JAN / 13','DD-MON-YY') FROM dual;
- ORA 错误
- 01-JAN-2013
- 01-JANUARY-13
- 01-JAN-13
答案:A. 在日期之间使用单个分隔符。
53. 以下查询的结果是什么?
SELECT TO_DATE('01/JAN/13','fxDD-MON-YY') FROM dual;
- 01-JAN-2013
- ORA 错误
- 01-JAN-13
- 01-JANUARY-13
答案:B. 使用格式精确修饰符时,输入文本必须与格式字符串匹配。
54. 以下查询的结果是什么?
SELECT TO_DATE('01-JAN-13','fxDD-MON-YY') FROM dual;
- 01-JAN-2013
- ORA 错误
- 01-JAN-13
- 01-JANUARY-13
答案:C.
55. 以下查询的结果是什么?
SELECT TO_DATE ('11-JAN-2013','fxDD-MON-YYYY') FROM dual;
- 11-JAN-13
- 11-01-13
- 11-JAN-2013
- ORA 错误
答案:C.
56. 员工 Allen 于 1-JAN-13 被聘用。以下查询的结果是什么?(假设会话的 NLS 参数设置为 DD-MON-YY)
SELECT TO_DATE(hire_date, 'fxfmDD-MON-YY') FROM employees WHERE first_name='ALLEN';
- ORA 错误
- 01-JAN-2013
- 1-JAN-13
- 1-JAN-2013
答案:C.
57. 以下查询的结果是什么?
SELECT TO_CHAR(TO_DATE ('01-JAN-2013'), 'DD-Month-RR') FROM dual;
- 01-JAN-13
- 01-01-2013
- 01-January-13
- 01-January -13
答案:D. Month 修饰符会用空格填充到 9 个位置。
检查给出的 EMPLOYEES 表的结构,并回答以下第 58 和 59 题。
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)
58. 您需要列出所有在 1990 年之前被聘用的员工的姓名和姓氏。以下哪个 WHERE 语句将为您提供所需的结果?(假设此列表是在“01-JAN-2013”生成)
- WHERE TO_DATE (hire_date, 'DD-MON-YY') < '01-JAN-1990'
- WHERE TO_DATE (hire_date, 'DD-MON-YYYY') < '01-JAN-1990'
- WHERE TO_DATE (hire_date, 'DD-MON-YY') < '01-JAN-90'
- WHERE TO_DATE (hire_date, 'DD-MON-RR') < '01-JAN-1990'
答案:D. 使用 RR 格式将考虑 1950 年至 1999 年之间的日期的年份部分。
59. 以下哪个是嵌套函数的示例?
SELECT lower(last_name) FROM employees;
SELECT upper (last_name) FROM employees;
SELECT concat (first_name, last_name) FROM employees;
SELECT upper (concat(SUBSTR(first_name,1,6),'_UK')) FROM employees;
答案:D. 函数中的多个函数称为函数嵌套。
60. 关于 Oracle 数据库中的 COALESCE 函数,哪个说法是正确的?
- 它只能接收 2 个参数。
- COALESCE 函数中的所有参数可以具有不同的数据类型。
- COALESCE 函数中的所有参数都应该具有相同的数据类型。
- 以上都不是
答案:C. COALESCE 函数接收两个必填参数和任意数量的可选参数。语法为 COALESCE(expr1, expr2,Ö,exprn),其中如果 expr1 不为 null,则返回 expr1,否则如果 expr2 不为 null,则返回 expr2,依此类推。
61. 以下哪个函数用于条件表达式?
- TO_CHAR
- COALESCE
- NVL
- CASE
答案:D. CASE 表达式可以实现 if-then-else 条件逻辑。CASE 表达式有两种变体。简单的 CASE 表达式只列出一次条件搜索项,并且每个比较表达式都会测试与搜索项的相等性。搜索的 CASE 表达式为每个比较表达式列出单独的条件。
62. 以下查询的结果是什么?
SELECT TO_CHAR(TO_DATE('01-JAN-13','DD-MON-YY'),'dy-mon-yyyy') FROM dual;
- 01-jan-2013
- 01-jan-13
- tue-jan-13
- tue-jan-2013
答案:D。格式模型“dy”拼写输入日期的前三个字母。 “DY”将给出“TUE”,而不是上面查询中给出的“tue”。
63. 以下查询的结果是什么?
SELECT TO_CHAR(TO_DATE('01-JAN-13','DD-MON-YY'),'fmDAY-mon-yyyy') FROM dual;
- 1-jan-2013
- 01-jan-13
- TUESDAY -jan-13
- TUESDAY-jan-2013
答案:D。fmDAY(所有大写字母)或fmday(所有小写字母)格式模型将拼写输入日期的日期,没有任何前导或尾随空格。
64. 以下查询的结果是什么?
SELECT TO_CHAR(TO_DATE('19-JUN-13'),'qth') FROM dual;
- 1st
- 2nd
- 3rd
- 4th
答案:B。格式模型“q”给出给定日期所在的季度。在给定的查询中,APR-JUN 是第 2 季度。
检查给定的EMPLOYEES表的结构,并回答接下来的第65到67题。
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)
65. 一些员工在今年(即2013年)的第二周加入了ABC公司。您需要列出所有这些员工的姓、名和部门ID。以下哪个查询将为您提供所需的结果?
SELECT first_name, last_name, department_id FROM employees WHERE TO_DATE(hire_date,'w') >2;
SELECT first_name, last_name, department_id FROM employees WHERE TO_DATE(hire_date,'w') between 1 and 2;
SELECT first_name, last_name, department_id FROM employees WHERE TO_CHAR(hire_date,'w') <3;
SELECT first_name, last_name, department_id FROM employees WHERE TO_CHAR(sysdate,'ww') =2;
答案:D。格式模型“ww”给出一年中的第几周。
66. ABC公司管理层想找出2012年第3季度有多少员工被聘用。以下哪个查询将为您提供所需的结果?
SELECT count(employee_id ) FROM employees WHERE TO_CHAR(hire_date, 'q') > 1;
SELECT count(employee_id ) FROM employees Where TO_CHAR(hire_date, 'q') = 3;
SELECT employee_id FROM employees Where TO_CHAR(hire_date, 'q') = 3;
SELECT count(employee_id ) FROM employees Where TO_CHAR(hire_date, 'q') between 0 and 3;
答案:B。格式模型“q”给出一年中的第几季度。
67. 需要打印并颁发荣誉证书给所有在2008年之前加入组织并仍然是组织一部分的员工。姓、名和日期的打印将通过使用从查询中获取的占位符来完成。证书应包含所有拼写的数字。例如:星期二,1月1日,二〇〇八年。证书的最终文本应采用以下格式:兹证明,姓名加入本组织于星期二,1月1日,二〇〇八年,已成功在公司工作5周年。以下哪个查询将有助于以所需格式打印日期?
SELECT TO_CHAR (hire_date, 'fmDay,"the "ddth "of " Month, Yysp.') FROM employees;
SELECT TO_CHAR (hire_date, 'Day,"the "ddth "of " Mon, Yyyy.') FROM employees;
SELECT TO_CHAR (hire_date, 'fmDAY,"the "ddth "of " Month, Ysp.') FROM employees;
SELECT TO_CHAR (hire_date, 'fmDay,"the "ddth "of " MONTH, Rsp.') FROM employees;
答案:A。“sp”标识符用简单的英语拼写年份。
68. 需要生成一个报告,该报告为所有员工从可用的纸质来源创建审计历史表。纸质来源仅包含员工被聘用的2011年的数据。此数据仅包含雇用日期的年份。您需要将日期作为该特定年份的1月1日(无前导零和空格)放入审计历史表中。以下哪个子句将实现此需求?
- TO_DATE('2011','YYYY')
- TO_CHAR (TO_DATE ('2011','YYYY'),'fmMM/DD/YYYY')
- TO_CHAR('2011','DD-MON-YYYY')
- TO_DATE ('01-01-2011','DD-MM-YYYY')
答案:B。
69. 以下查询的结果是什么?
SELECT TO_NUMBER ('$3000') FROM dual;
- 3000
- $3000
- NULL
- ORA 错误
答案:D。查询抛出“ORA-01722: 无效数字”错误,因为给定的字符串无法识别为数字。
70. 以下查询的结果是什么?
SELECT TO_NUMBER('$3,000.67','$999,999.99') FROM dual;
- $3000.67
- 3000
- 3000.67
- 由于输入字符串的字符少于提到的格式模型,因此出现ORA错误。
答案:C。适当的格式模型帮助TO_NUMBER将给定的字符串转换为数字。
71. 以下查询的结果是什么?
SELECT TO_NUMBER('$3,000,000.67','$999,999.99') FROM dual;
- $3,000,000.67
- 3000,000.67
- 3000.67
- 由于格式模型的字符少于输入字符串,因此出现ORA错误。它应该相同。
答案:D。
72. 以下查询将产生什么结果?
SELECT TO_NUMBER('456.23','999.99') FROM dual;
- ORA 错误
- 456.23
- 456
- 以上都不是
答案:B。
73. 关于嵌套函数,以下哪一项是正确的?
- 嵌套意味着将一个函数的输出用作另一个函数的输入。
- 嵌套最多可以应用到3级嵌套。
- 嵌套应用于多行函数,直至任何深度。
- 以上都不是
答案:A。函数执行的输出用作其前一个函数的输入。
74. 以下查询的结果是什么?
SELECT NULLIF(1,2-1) FROM dual;
- 0
- 1
- NULL
- 以上都不是
答案:C。NULLIF函数测试两个项是否相等。如果它们相等,则函数返回null,否则返回测试的两个项中的第一个。这里,Oracle认为1和表达式“2-1”相等,因此返回NULL。
75. 以下查询的结果是什么?
SELECT NULLIF('01-JAN-2013','01-JAN-13') FROM dual;
- 1-JAN-13
- 01-JAN-2013
- NULL
- ORA 错误
答案:B。由于两个日期的长度不同,因此返回第一个参数。
76. Oracle DB中COALESCE函数的必选参数与可选参数的比例是多少?
- 0:1
- 1:2
- 2:任意数量
- 以上都不是
答案:C。COALESCE函数有两个必选参数和任意数量的可选参数。OALESCE是NVL函数的通用形式,如下面的两个等式所示:COALESCE(expr1,expr2) = NVL(expr1,expr2), COALESCE(expr1,expr2,expr3) = NVL(expr1,NVL(expr2,expr3))。
77. 以下哪些等式是正确的?
- COALESCE(expr1,expr2) = NVL(expr1,expr2)
- COALESCE(expr1,expr2) = NVL2(expr1,expr2,expr3)
- COALESCE(expr1,expr2,expr3) = NVL(expr1,NVL(expr2,expr3))
- 以上所有
答案:A,C。
78. 以下哪个是NVL2的正确语法?
- NVL(original,ifnotnull)
- NVL2(original,ifnull,ifnotnull)
- NVL(original,NULL)
- NVL(original,ifnull) 和 NVL2(original,ifnotnull,ifnull)
答案:D。
79. 以下哪个函数是Oracle中继承的ANSI标准关键字?
- CASE
- DECODE
- A和B
- 以上都不是
答案:A。CASE是符合ANSI SQL标准的,而不是Oracle特有的。
80. 关于Oracle DB中的DECODE语句,以下哪一项是正确的?
DECODE(expr1,comp1,iftrue1,comp2,[iftrue2])
- Comp2不是可选的
- 如果expr1等于comp1,则返回comp2
- 如果expr1等于comp1,则返回iftrue1
- 以上都不是
答案:C。DECODE函数通过测试其前两个项是否相等来实现if-then-else条件逻辑,如果它们相等则返回第三个,如果它们不相等则可选地返回另一个项。DECODE函数至少需要三个必选参数,但可以接受更多参数。
81. 关于DECODE函数中的参数,以下哪一项是正确的?
- 所有参数必须是VARCHAR2
- 没有表达式可以作为DECODE函数的参数
- 所有参数必须是NUMBER
- 返回的数据类型与第一个匹配的比较项的数据类型相同。
答案:D。DECODE函数通过测试其前两个项是否相等来实现if-then-else条件逻辑,如果它们相等则返回第三个,如果它们不相等则可选地返回另一个项。
82. 以下查询的结果是什么?
SELECT DECODE (null,null,'expr3') FROM dual;
- NULL
- 0
- Expr3
- ORA 错误
答案:C。DECODE认为两个NULL值是等价的。Oracle中NULL的一个异常。
83. 以下查询的结果是什么?
SELECT DECODE ('elephant','rat','lion','tiger','cat','squirrel','elephant','koala','rat','And it continues') FROM dual;
- elephant
- rat
- koala
- 并且它继续
答案:D。DECODE函数至少需要三个必选参数,但可以接受更多参数。
84. Oracle DB中CASE表达式的最小必选参数数量是多少?
- 0
- 1
- 2
- 3
答案:D。CASE表达式有助于if-then-else条件逻辑。CASE表达式有两种变体。简单的CASE表达式只列出一次条件搜索项,并且每个比较表达式都测试与搜索项的相等性。搜索的CASE表达式为每个比较表达式列出一个单独的条件。它至少需要3个必选参数,但也可以接受更多参数。
85. Oracle DB中使用哪种关键字组合来包含CASE语句?
- CASEÖEND IF;
- IFÖEND IF;
- CASEÖ;
- CASEÖEND;
答案:D。
86. 如果CASE语句中未定义ELSE块,则在出现错误值时返回哪个值?
- 0
- NULL
- 0或NULL
- 以上都不是
答案:B。
87. 如果CASE语句中存在多个WHEN..THEN级别,以下哪个选项是正确的?
- CASE仅搜索或比较第一个级别,并在不检查WHENÖTHEN的其他级别的条件下退出。
- CASE语句将在WHENÖTHEN的所有级别中搜索,直到找到匹配项。
- A和B
- 以上都不是
答案:B。
88. CASE语句中的搜索、比较和结果参数可以是什么数据类型?
- VARCHAR2
- DATE
- NUMBER
- 列值、文字和表达式
答案:D。
89. CASE语句不能用于Oracle SQL查询的哪些部分?
- SELECT
- 没有这些选项
- WHERE
- ORDER BY
答案:B。
90. 检查给定的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)
以下查询在Oracle DB中的结果是什么?
SELECT first_name, salary, CASE department_id WHEN 100 THEN 'Accounts' WHEN 101 THEN 'Human Resources' WHEN 102 THEN 'Sales' ELSE 'Unknown' END FROM employees;
- 它将创建一个ORA错误,因为CASE语句中不能编写多个WHENÖTHEN语句。
- 它将显示部门ID为100、101、102
- 它将仅显示每当部门ID为100时出现“Accounts”,并忽略其余命令。
- 以上都不是
答案:D. CASE 表达式可以实现 if-then-else 条件逻辑。CASE 表达式有两种变体。简单的 CASE 表达式只列出一次条件搜索项,并且每个比较表达式都会测试与搜索项的相等性。搜索的 CASE 表达式为每个比较表达式列出单独的条件。
91. Oracle DB中CASE语句可以有多少个WHENÖTHEN级别?
- 无限
- 1000
- 216
- 255
答案:D。
92. 以下查询的结果是什么?
SELECT NVL2( NULLIF ('BMW','AUDI'), 'HYUNDAI', 'FERRARI' ) FROM dual;
- BMW
- FERRARI
- NULL
- HYUNDAI
答案:D。NVL2函数对NVL进行了增强,但功能非常相似。它评估任何数据类型的列或表达式是否为空。如果第一个项不为空,则返回第二个参数,否则返回第三个参数。
93. 假设SYSDATE为01-JAN-13,以下查询将产生什么结果?
SELECT TO_CHAR (sysdate, 'fmddth" of" Month YYYY') FROM dual;
- 1月1日,2013年
- 1月1日,2013年
- 2013年1月1日
- 1月1日2013年
答案:D。“th”格式模型将日期的日期作为“st”或“th”给出。
94. 以下查询的结果是什么?
SELECT TO_CHAR (TO_DATE('01-JAN-13','DD-MON-YY'), 'MmSP Month Yyyysp') FROM dual;
- 一月一日二〇一三年
- 一月JAN二〇一三年
- 一日一月二〇一三年
- 以上都不是
答案:C.
95. 以下查询的结果是什么?
SELECT TO_CHAR (TO_DATE('01-JAN-13','DD-MON-YY'), 'DD-MON-YYYY hh24SpTh') FROM dual;
- 一月一日二〇一三年
- 一日一月二〇一三年
- ORA 错误
- 01-JAN-2013 zeroeth
答案:D。使用“SpTh”格式修饰符可以拼写时间戳组件。
96. 这些函数中哪些函数在SQL语句中执行类似于if-then-else逻辑的工作?
- TO_CHAR
- TO_NUMBER
- A和B
- CASE
答案:D. CASE 表达式可以实现 if-then-else 条件逻辑。CASE 表达式有两种变体。简单的 CASE 表达式只列出一次条件搜索项,并且每个比较表达式都会测试与搜索项的相等性。搜索的 CASE 表达式为每个比较表达式列出单独的条件。
97. 检查给定的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)
以下SQL查询的结果是什么?
SELECT DECODE (salary,10000) FROM employees;
- 10000
- NULL
- 0
- ORA 错误
答案:B。DECODE函数通过测试其前两个项是否相等来实现if-then-else条件逻辑,如果它们相等则返回第三个,如果它们不相等则可选地返回另一个项。DECODE函数至少需要三个必选参数,但可以接受更多参数。如果DECODE函数中的默认值被省略,则返回NULL。
98. 您需要将Oracle DB会话的时间显示到小数秒后的3位小数。以下哪个查询将给出所需输出?
SELECT TO_CHAR(sysdate, 'DD-MON-YY HH24:MI:SS.FF') FROM dual;
SELECT TO_CHAR(sysdate, 'DD-MON-YY HH24:MI:SS') FROM dual;
SELECT TO_CHAR(sysdate, 'DD-MON-YY HH24:MI:SS.FF3') FROM dual;
SELECT TO_CHAR(sysdate, 'DD-MON-YY') FROM dual;
答案:C。HH:MI:SS格式的FF [1..9]扩展名在小数秒中产生最多1..9位的小数秒。
99. Oracle DB中日期和时间可以使用哪些标点符号?
- #
- @
- ,
- :
答案:C,D。
100. 检查给定的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)
您需要查找员工Jaimie Patrick在ABC公司被聘用的那一年中的第几天。以下哪个查询将给出所需的输出?
SELECT TO_CHAR(hire_date, 'DDD') FROM employees WHERE last_name = 'Patrick' AND first_name = 'John';
SELECT TO_CHAR(hire_date, 'YYYY') FROM employees WHERE last_name = 'Patrick' AND first_name = 'John';
SELECT TO_CHAR(hire_date, 'DD-MON-YYYY') FROM employees WHERE last_name = 'Patrick' AND first_name = 'John';
SELECT TO_CHAR(hire_date, 'DD-MON-RR') FROM employees WHERE last_name = 'Patrick' AND first_name = 'John';
答案:A。格式模型“DDD”返回给定日期所在的一年中的第几天。
101. 需要生成一个报告,该报告提供2013年6月1日午夜开始的所有批处理运行的计时。这些计时应以午夜后的秒精度表示。以下哪个子句将满足要求?
- TO_CHAR(sysdate,'HH24:MI:SS')
- TO_CHAR(sysdate,'HH24:MI:SS.FF')
- TO_CHAR(sysdate,'HH24:MI:SSSS')
- TO_CHAR(sysdate,'HH24:MI:SS.FF3')
答案:C。 'SSSS' 格式模型给出的是午夜后的秒数。