为什么此SQL查询不将最后两个字母转换为大写字母



我有一个SQL查询;

SELECT INITCAP(
         first_name
         || ' '
         || UPPER(
              SUBSTR(Last_Name
                    ,-LENGTH(Last_Name)
                    ,2)
            )
         ) 
FROM employees;

结果是这样的;

David Au
Hermann Ba
Shelli Ba
Amit Ba
Elizabeth Ba
Sarah Be
David Be

为什么最后两个字母没有转换成大写字母?任何帮助都将不胜感激。

您正在对整个结果集应用INITCAP,因此,在最后两个字符转换为UPPER后,您将再次应用INITCAP。把它们分开。

INITCAP(first_name) || ' ' || UPPER(SUBSTR(Last_Name, -LENGTH(Last_Name),2))

例如,

SQL> SELECT INITCAP(first_name)
  2    || ' '
  3    || UPPER(SUBSTR(Last_Name, -LENGTH(Last_Name),2))
  4  FROM hr.employees
  5  WHERE rownum <=10;
INITCAP(FIRST_NAME)||''
-----------------------
Ellen AB
Sundar AN
Mozhe AT
David AU
Hermann BA
Shelli BA
Amit BA
Elizabeth BA
Sarah BE
David BE
10 rows selected.

因为括号放错了-

SELECT INITCAP(first_name) || ' ' || UPPER(SUBSTR(Last_Name, -LENGTH(Last_Name),2))
FROM employees;

最新更新