Oracle数据库常用函数解析

需积分: 10 3 下载量 2 浏览量 更新于2024-07-26 收藏 123KB DOC 举报
"Oracle数据库110个常用函数文档包含了各种功能强大的函数,这些函数用于处理字符串、数字、日期等多种数据类型,以实现更复杂的查询和数据操作。文档中的示例展示了如何使用这些函数,帮助用户更好地理解和应用Oracle SQL。" 在Oracle数据库中,函数是SQL语句的重要组成部分,它们允许我们对数据进行各种处理和转换。以下是一些在描述中提到的常用函数的详细说明: 1. **ASCII函数**: - `ASCII()` 函数返回一个字符的ASCII码(十进制数字)。例如,`ASCII('A')` 返回65,表示字符'A'的ASCII值。 2. **CHR函数**: - `CHR()` 函数根据给定的ASCII码返回对应的字符。如 `CHR(65)` 返回 'A',`CHR(54740)` 在Unicode编码下可能返回汉字'赵'。 3. **CONCAT函数**: - `CONCAT()` 用于连接两个或多个字符串。在例子中,`CONCAT('010-', '88888888')` 结果为 '010-88888888'。 4. **INITCAP函数**: - `INITCAP()` 函数将每个单词的首字母转换为大写,其余字母转换为小写。例如,`INITCAP('smith')` 返回 'Smith'。 5. **INSTR函数**: - `INSTR()` 查找字符串 `C1` 中的子串 `C2` 的位置。`INSTR('oracletraining', 'ra', 1, 2)` 返回9,表示第二个 'ra' 开始的位置。 6. **LENGTH函数**: - `LENGTH()` 返回字符串的字符数。例如,`LENGTH('高乾竞')` 返回3,`LENGTH('北京市海锭区')` 返回6。 7. **LOWER函数**: - `LOWER()` 将字符串中的所有字符转换为小写。如 `LOWER('AaBbCcDd')` 返回 'aabbccdd'。 8. **UPPER函数**: - `UPPER()` 反之,将字符串中的所有字符转换为大写。如 `UPPER('AaBbCcDd')` 返回 'AABBCCDD'。 除了这些,Oracle SQL还包含许多其他函数,如 `SUBSTR()` 用于提取字符串的一部分,`REPLACE()` 用于替换字符串中的特定部分,`TRIM()` 去除字符串两侧的空白,`TO_CHAR()` 和 `TO_DATE()` 用于数据类型转换,以及数学函数如 `SQRT()`(平方根)和 `MOD()`(取模运算)等。 了解并熟练使用这些函数对于优化SQL查询,提升数据库操作效率至关重要。在实际开发中,结合这些函数可以创建复杂的查询逻辑,处理各种数据问题,从而增强数据库管理能力。

SELECT PIS.SHOW_FLT_DETAIL AS SHOW_FLT_DETAIL -- new , PIS.SHOW_AWB_DETAIL AS SHOW_AWB_DETAIL -- new , PIS.DISPLAY_AIRLINE_CODE AS CARRIER_CODE , DECODE(PIS.REVERT_FLOW,'N',PIS.FLOW_TYPE,DECODE(PIS.FLOW_TYPE,'I','E','I')) AS FLOW_TYPE , PIS.SHIP_TO_LOCATION AS SHIP_TO_LOCATION , PIS.INVOICE_SEQUENCE AS INVOICE_SEQUENCE , PFT.FLIGHT_DATE AS FLIGHT_DATE , PFT.FLIGHT_CARRIER_CODE AS FLIGHT_CARRIER_CODE , PFT.FLIGHT_SERIAL_NUMBER AS FLIGHT_SERIAL_NUMBER , PFT.FLOW_TYPE AS AIRCRAFT_FLOW , FAST.AIRCRAFT_SERVICE_TYPE AS AIRCRAFT_SERVICE_TYPE , PPT.AWB_NUMBER AS AWB_NUMBER , PPT.WEIGHT AS WEIGHT , PPT.CARGO_HANDLING_OPERATOR AS CARGO_HANDLING_OPERATOR , PPT.SHIPMENT_PACKING_TYPE AS SHIPMENT_PACKING_TYPE , PPT.SHIPMENT_FLOW_TYPE AS SHIPMENT_FLOW_TYPE , PPT.SHIPMENT_BUILD_TYPE AS SHIPMENT_BUILD_TYPE , PPT.SHIPMENT_CARGO_TYPE AS SHIPMENT_CARGO_TYPE , PPT.REVENUE_TYPE AS REVENUE_TYPE , PFT.JV_FLIGHT_CARRIER_CODE AS JV_FLIGHT_CARRIER_CODE , PPT.PORT_TONNAGE_UID AS PORT_TONNAGE_UID , PPT.AWB_UID AS AWB_UID , PIS.INVOICE_SEPARATION_UID AS INVOICE_SEPARATION_UID , PFT.FLIGHT_TONNAGE_UID AS FLIGHT_TONNAGE_UID FROM PN_FLT_TONNAGES PFT , FZ_AIRLINES FA , PN_TONNAGE_FLT_PORTS PTFP , PN_PORT_TONNAGES PPT , FF_AIRCRAFT_SERVICE_TYPES FAST , SR_PN_INVOICE_SEPARATIONS PIS --new , SR_PN_INVOICE_SEP_DETAILS PISD--new , SR_PN_INV_SEP_PORT_TONNAGES PISPT --new WHERE PFT.FLIGHT_OPERATION_DATE >= trunc( CASE :rundate WHEN TO_DATE('01/01/1900', 'DD/MM/YYYY') THEN ADD_MONTHS(SYSDATE,-1) ELSE ADD_MONTHS(:rundate,-1) END, 'MON') AND PFT.FLIGHT_OPERATION_DATE < trunc( CASE :rundate WHEN TO_DATE('01/01/1900', 'DD/MM/YYYY') THEN TRUNC(SYSDATE) ELSE TRUNC(:rundate) END, 'MON') AND PFT.TYPE IN ('C', 'F') AND PFT.RECORD_TYPE = 'M' AND (PFT.TERMINAL_OPERATOR NOT IN ('X', 'A') OR (PFT.TERMINAL_OPERATOR <> 'X' AND FA.CARRIER_CODE IN (SELECT * FROM SPECIAL_HANDLING_AIRLINE) AND PPT.REVENUE_TYPE IN (SELECT * FROM SPECIAL_REVENUE_TYPE) AND PPT.SHIPMENT_FLOW_TYPE IN (SELECT * FROM SPECIAL_SHIPMENT_FLOW_TYPE) AND PFT.FLIGHT_OPERATION_DATE >= (select EFF_DATE from SPECIAL_HANDLING_EFF_DATE) )) AND PFT.DELETING_DATETIME IS NULL AND FA.AIRLINE_UID = PFT.AIRLINE_UID AND FA.DELETING_DATETIME IS NULL AND PTFP.FLIGHT_TONNAGE_UID = PFT.FLIGHT_TONNAGE_UID AND PTFP.RECORD_TYPE = 'M' AND PTFP.DELETING_DATETIME IS NULL AND PPT.TONNAGE_FLIGHT_PORT_UID (+)= PTFP.TONNAGE_FLIGHT_PORT_UID AND PPT.RECORD_TYPE (+)= 'M' AND PPT.DISCREPANCY_TYPE (+)= 'NONE' AND PPT.ADJUSTMENT_INC_FLAG (+)= 'Y' AND PPT.DELETING_DATETIME (+) IS NULL AND FAST.AIRCRAFT_SERVICE_TYPE_UID = PFT.AIRCRAFT_SERVICE_TYPE_UID AND FAST.DELETING_DATETIME IS NULL AND PIS.TEMPORAL_NAME = TO_CHAR((CASE :rundate --new WHEN TO_DATE('01/01/1900', 'DD/MM/YYYY') THEN TRUNC(SYSDATE) ELSE TRUNC(:rundate) END ), 'YYYYMM') || '00' AND PIS.INVOICE_SEPARATION_UID = PISD.INVOICE_SEPARATION_UID --new AND PISD.INVOICE_SEP_DETAIL_UID = PISPT.INVOICE_SEP_DETAIL_UID --new AND PISPT.PORT_TONNAGE_UID = PPT.PORT_TONNAGE_UID --new AND PIS.PRINT_SUPPORTING_DOC = 'Y';上面是oracle的写法,请转成spark SQL的写法。

2023-06-02 上传