1. 程式人生 > >Oracle/Hive/Impala SQL比較(5)

Oracle/Hive/Impala SQL比較(5)

5 Function      指資料庫內建的function,不討論UDF。另外,操作符都不比較了,區別不大。 5.1 數學函式
功能 Oracle Hive Impala
ABS 絕對值,有
SIN/SINH/ASIN/COS/COSH/ACOS/TAN/TANH/ATAN/ATAN2 三角函式 其中ATAN2接受兩個引數(二維平面中的座標) 沒有SINH/COSH/TANH/ATAN2 同hive
BITAND 按位與,有
CEIL 天花板值,有 有,還有個別名CEILING 有,同hive
EXP e的多少次,有 有,還有個函式E()返回e 有,同hive
FLOOR 地板值,有
LN 以e為底的log,有
LOG 以某個double為底的log,有 有,還有兩個特殊底的log:LOG2和LOG10 有,同hive
MOD Oracle的MOD的計算方式為MOD(n2,n1)=n2 - n1 * FLOOR(n2/n1),這與經典取模還不同,比如Oracle的MOD(-11,4)=-3,但經典取模等於1
在hive裡取模用PMOD,返回值一定是個正數,比如PMOD(-11,4)=1。但這與經典取模還是不同,比如PMOD(-11,-4)=1,但經典取模等於-3 Impala的PMOD和hive的PMOD相同,另外Impala還有個FMOD和Oracle的MOD相同
POWER 求冪,有 有,還有個別名POW 有,同hive
REMAINDER 取餘,REMAINDER(n2,n1)=n2 - n1 * FLOOR(n2/n1)
ROUND 舍入,支援1個引數和2個引數兩種版本
另外還有一個BROUND,使用HALF_EVEN舍入模式,見官方手冊 有,同Oracle
SIGN 符號函式,有
SQRT 開方,有
TRUNC 擷取數值的小數點後多少位(如果是負值則往前推)
DEGREES/RADIANS 角度/弧度互轉 同hive
POSITIVE/NEGATIVE 相當於在數值前加+/-號(因此沒什麼卵用) 同hive
PI 返回pi值 同hive
FACTORIAL 階乘,1.2.0以後才有
CBRT 求立方根,1.2.0以後才有
SHIFTLEFT/SHIFTRIGHT/SHIFTRIGHTUNSIGNED 按位左移/右移/無符號右移
GREATEST/LEAST 返回一串值中的最大/最小值,這串值的型別可以是任意,只要可比較大小(所以其實不是數學函式而是通用比較) 有,1.1.0以後
5.2 字元(串)函式
功能 Oracle Hive Impala
ASCII 輸入必須char,返回該字元的ascii數值 輸入String,返回該String第一個字元的ascii數值 同hive
BASE64 / UNBASE64 將二進位制值轉為base64的String(UN則是反向)
CONCAT CONCAT(char1, char2) char或char2均可為CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB, or NCLOB之一 concat(string|binary A, string|binary B...) 可以有多個引數 另外提供CONCAT_WS用於指定特殊分隔符的連線 同hive(除了不支援binary型別),且也有CONCAT_WS
DECODE/ENCODE string decode(binary bin, string charset)  binary encode(string src, string charset) 編碼和解碼用的,用於支援hive特有的binary型別 (其實oracle和impala也有DECODE,但作用完全不同,見條件函式中的DECODE)
FIND_IN_SET find_in_set(string str, string strList) strList是用’,’分割的一組string,該函式將尋找strList中第一個精確匹配的str 同hive
FORMAT_NUMBER 將數字格式化為string
GET_JSON_OBJECT 抽取JSON物件,不常用
IN_FILE in_file(string str, string filename) 檢測str是否為filename對應檔案中的某行,不常用
INITCAP 將每個單詞(以空白分隔)轉換為首字母大寫其餘小寫的形式 同oracle,1.1.0開始有 同oracle
INSTR { INSTR | INSTRB | INSTRC | INSTR2 | INSTR4 } (string , substring [, position [, occurrence ] ]) 搜尋子串,不同資料型別呼叫名不同,最多可帶四個引數,其中第三個是開始位置,第四個是出現的第幾次 instr(string str, string substr) 只接受兩個引數 同hive
LENGTH { LENGTH | LENGTHB | LENGTHC | LENGTH2 | LENGTH4 } (char) 串長,不同資料型別呼叫名不同 有(僅LENGTH) 同hive
LEVENSHTEIN 返回兩個串的Levenshtein距離(編輯距離)1.2.0後才有
LOCATE 特殊情況的INSTR,可以指定匹配的開始位置。Oracle因為本來INSTR就支援所以並不需要該函式 同hive
LOWER 轉小寫 有,且有一個別名叫LCASE 同hive
LPAD / RPAD LPAD(expr1, n [, expr2 ]) 在expr1之前用expr2填充n個字元,如expr2省略預設用n個單空格填充。RPAD類似只是在右邊 有,但expr2不能省略 同hive
LTRIM / RTRIM LTRIM(char [, set ]) 去掉char左側包含在set中的字元,如省略set,則只去除空格符。RTRIM類似只是在右邊 有,但沒有set引數,即只能去除空格符 同hive
PARSE_URL 抽取URL,可以指定抽取URL的型別和建名 同hive
PRINTF 按格式列印物件陣列
REGEXP_EXTRACT / REGEXP_SUBSTR REGEXP_SUBSTR(source_char, pattern  [, position   [, occurrence    [, match_param     [, subexpr ]  ]  ]  ]  ) 按正則表示式抽取字串,並返回其中一部分。注意Oracle和hive/impala中函式名不同 regexp_extract(string subject, string pattern, int index) 類似Oracle,但不能指定起始位置,替換序號和匹配引數 同hive
REGEXP_REPLACE REGEXP_REPLACE(source_char, pattern  [, replace_string    [, position     [, occurrence      [, match_param ]  ] ] ] ) 按正則表示式替換字串中的一部分 regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT) 類似Oracle,但不能指定起始位置,替換序號和匹配引數 同hive
REGEXP_COUNT REGEXP_COUNT (source_char, pattern [, position [, match_param]]) 按正則表示式對字串中子串的出現次數計數
REGEXP_INSTR REGEXP_INSTR (source_char, pattern  [, position   [, occurrence    [, return_opt     [, match_param      [, subexpr]   ] ] ] ] ) 在字串中查詢滿足正則表示式的子串第一次出現的位置
REPEAT 重複n次 同hive
REPLACE 簡單替換文字
REVERSE 返回逆串 同hive
SENTENCES 簡單的分詞功能,很奇怪hive為何提供這樣的功能
SOUNDEX 取英文中的“諧音”,可能是用於存在髒資料時的匹配吧,詭異的功能 有,1.2.0以後
SPACE 返回n個空格 同hive
SPLIT 使用正則表示式分割字串
STR_TO_MAP 將字串轉為鍵值對
STRLEFT / STRRIGHT 返回最左/最右的n個字元,是SUBSTR的簡化版
SUBSTR / SUBSTRING { SUBSTR | SUBSTRB | SUBSTRC | SUBSTR2 | SUBSTR4 } (char, position [, substring_length ]) 不同資料型別呼叫名不同 類似Oracle,只有SUBSTR和其別名SUBSTRING 同hive
SUBSTRING_INDEX substring_index(string A, string delim, int count) 返回A在delim出現第count次前的部分,1.3.0後才有
TRANSLATE TRANSLATE(expr, from_string, to_string) 將expr,按from_string中出現的每個字元替換為to_string中對應序號的字元 Oracle還有種TRANSLATE...USING語法是其他兩個沒有的 同oracle 同oracle
TRIM TRIM([ { { LEADING | TRAILING | BOTH }  [ trim_character ]        | trim_character}  FROM   ] trim_source) 比較靈活,可指定去除前端還是後端,去除什麼字元。如果只留trim_source一個引數則等同於後兩者 trim(string A) 簡單去除A前後的空白 同hive
UPPER 轉大寫 有,且有一個別名LCASE 同hive
5.3 日期函式
功能 Oracle Hive Impala
ADD_MONTHS 在某日期上加上n個月 有,1.1.0以後
CURRENT_DATE 返回當前時間(和session的時區相關),精確到秒 返回當前時間(sql評估時的時間,同一個查詢中多次呼叫該函式值相同),1.2.0以後
CURRENT_TIMESTAMP 返回當前時間(和session的時區相關),精確到毫秒,返回型別為TIMESTAMP WITH TIME ZONE 返回當前時間(sql評估時的時間,同一個查詢中多次呼叫該函式值相同,精確到毫秒),1.2.0以後 有,另有一個別名NOW
DATE_ADD / DATE_SUB 在某日期上加/減n天 同hive,可接收timestamp或string型別。 只接收timestamp型別的該函式有兩套,稱為DAYS_ADD/DAYS_SUB,ADDDATE/SUBDATE(真不懂impala搞這麼多名字雷同的東西幹啥)
DATE_FORMAT 用格式字串格式化日期(可為date/timestamp/string)
DATE_PART 省略order引數的EXTRACT
DATEDIFF 求兩個日期間差的天數 同hive
DAY / DAYOFMONTH 返回該日期在月內的日數,兩個函式同義 同hive
DAYNAME 返回周間的名字,即’Sunday’到’Saturday'
DAYOFWEEK 返回周間的序號,1(Sunday)到7(Saturday)
DAYOFYEAR 返回是本年第幾天
DBTIMEZONE 資料庫當前時區
EXTRACT EXTRACT( { YEAR          | MONTH          | DAY          | HOUR          | MINUTE          | SECOND          | TIMEZONE_HOUR          | TIMEZONE_MINUTE          | TIMEZONE_REGION          | TIMEZONE_ABBR          }          FROM { expr } ) 按引數提取日期中的某部分 extract(timestamp, string unit) extract(unit FROM timestamp) 比Oracle多一種格式
FROM_TZ 將時間戳和時區合併為帶時區的時間戳
FROM_UNIXTIME 將unix紀元以來的秒數轉化為時間字串 同hive
FROM_UTC_TIMESTAMP 將UTC的時間戳值轉化為指定時區的時間戳值 同hive
HOUR 返回時間字串的小時值 同hive
HOURS_ADD / HOURS_SUB 在某日期上加/減n個小時
LAST_DAY 返回該日期所在月份的最後一天 同Oracle,1.1.0以後
LOCALTIMESTAMP 返回當前時間(和session的時區相關),精確到毫秒,返回型別為TIMESTAMP
MICROSECONDS_ADD / MICROSECONDS_SUB 在某日期上加/減n微秒
MILLISECONDS_ADD / MILLISECONDS_SUB 在某日期上加/減n毫秒
MINUTE 返回時間字串的分鐘值
MINUTES_ADD / MINUTES_SUB 在某日期上加/減n分鐘
MONTH 返回時間字串的月份 同hive
MONTHS_ADD / MONTHS_SUB 在某日期上加/減n個月(其實第一個和ADD_MONTHS重複)
MONTHS_BETWEEN 返回兩個日期間相差的月數,注意返回值是個浮點數 同Oracle,1.2.0後
NANOSECONDS_ADD / NANOSECONDS_SUB 在某日期上加/減n納秒(impala搞這麼多沒用的加減函式真不知道幹什麼)
NEW_TIME 將時區1的時間轉換為時區2的時間
NEXT_DAY 返回指定日期後下一個星期幾的日期 同Oracle,1.2.0後
NUMTODSINTERVAL /  NUMTOYMINTERVAL 生成n時間單位的一個日期間隔。前一函式的間隔可選DAY,HOUR,MINUTE,SECOND,後一個的間隔可選MONTH,YEAR
QUATER 返回日期的季度值(1-4),1.3.0後
ROUND 對日期做舍入
SECOND 返回時間字串的秒值 同hive
SECOND_ADD / SECOND_SUB 在某日期上加/減n秒
SESSIONTIMEZONE 返回session的時區

相關推薦

Oracle/Hive/Impala SQL比較5

5 Function      指資料庫內建的function,不討論UDF。另外,操作符都不比較了,區別不大。 5.1 數學函式 功能 Oracle Hive Impala ABS

hive支援sql大全收藏版

hive操作資料庫還是比較方便的,因此才會有hbase與hive整合。下面我們hive的強大功能吧。為了增強閱讀性,下面提幾個問題: hive支援哪些運算子? hive是否支援左右連線? hive如何擷取字串? hive提供了那些系統函式? 目錄

SQL資料庫5——資料庫完整性----觸發器

觸發器是一種特殊的儲存過程,當用戶對錶中的資料進行update、insert或delete操作時自動觸發執行,通常用於保障業務規則和資料完整性 觸發器的常用功能 完成比約束更復雜的資料約束 檢查所做的sql是否允許 呼叫更多的儲存過程 防止資料

用cloudera manager安裝impala全過程以impalahive、Spark效能比較-cloudera manager 安裝impala成功並對impalahive進行簡單測試

Cloudera manager安裝impala除了第一篇文章提到的條件:1.需要安裝centos6.2系統。2.CDH4.1.0以上版本3.要在叢集每個節點安裝hive。4.hive的元資料庫要使用mysql。5.每臺主機hosts檔案中都加入所有機器的IP地址和主機名的

oracle sql 基礎:數據定義語言創建和管理序列、索引、同義詞

aps span 最小值 into 全表掃描 條件 creat 返回 ext 許多應用程序要求使用唯一的數字作為主鍵的值,你即可以在應用程序中構建代碼來處理這種需求,也可以用一個序列來產生唯一的數字。如果你想要增進某些查詢的性能,你應該考慮創建一個索引,你也可

Hive學習之路 Hive SQL之數據類型和存儲格式

OS big api 而且 好的 存儲 array 文本文件 字符串 一、數據類型 1、基本數據類型 Hive 支持關系型數據中大多數基本數據類型 類型描述示例 boolean true/false TRUE tinyint 1字

oracle 11g ocp 筆記5-- oracle存儲結構

dia tro min 編號 contents all 重做日誌 absolut bit 1、了解oracle表空間和數據文件。 oracle存儲模型。表空間、段、區間、oracle塊,數據文件、和操作系統塊的對應關系。 select segment _type ,coun

spring boot-mybatis三種動態sql5

內部 轉換成 ava .get bat class ide div upd 腳本sql XML配置方式的動態SQL我就不講了,有興趣可以自己了解,下面是用<script>的方式把它照搬過來,用註解來實現。適用於xml配置轉換到註解配置 @Select("&l

Oracle入門SQL練習

inf != 開頭 工作 排序 desc 令行 查詢排序 模糊查詢 以下內容以scott用戶下Oracle自帶實例orcl庫中四張表進行查詢,作為Oracle入門SQL基礎練習筆記,不忘初心,加油! --1).查詢一個用戶下所有的表SELECT * FROM tab; --

Hadoop5--hive

asto ges -h alt dbms sql語句 元數據 reduce report 在Hadoop的存儲處理方面提供了兩種不同的機制,一種是之前介紹過的Hbase,另外一種就是Hive,有關於Hbase,它是一種nosql數據庫的一種,是一種數據庫,基於分布式的列式存

T-SQL執行內幕5——執行

本文屬於SQL Server T-SQL執行內幕系列      一旦優化器選擇了開銷最低的預估執行計劃之後,就會把預估執行計劃轉換成實際執行樹(Actual Execution Tree)進行查詢執行。樹的每個節點都是一個操作符

大資料晉級之路5Hadoop,Spark,Storm綜合比較

大資料框架:Spark vs Hadoop vs Storm 目錄 Hadoop Spark Storm   大資料時代,TB級甚至PB級資料已經超過單機尺度的資料處理,分散式處理系統應運而生。 知識預熱 「專治不明覺厲」之“大資料

Phoenix5:SQuirreL SQL Client 連線 phoenix

1.工具簡介 SQuirreL:是連線phoenix的小工具 2.下載安裝包 下載地址:http://squirrel-sql.sourceforge.net/,下載下來呢是一個jar檔案,雙擊安裝,直接下一步即可 3.配置 (1)將伺服器上phoenix根目錄下的phoenix

Sql Server資料庫開發5事物和遊標

1.瞭解事物 事務(是一個不可分割的工作邏輯單元) - 是由若干條T-SQL指令組成的作為單個邏輯過左單元執行的一系列操作,這些操作作為一個整體一起向系統提交,全部執行完成,要麼全部撤銷。 事務的四個特性(簡稱ACID):原子性、一致性、隔離性、永久性

Oracle中的SQL語句此篇重點介紹DML

1.DML=Data Manipulation Language 資料操縱,由DBMS提供,實現對資料庫中資料的操作。DML分為兩種,過程性DML和非過程性DML。 非過程化語言就是它一次處理一個記錄,對資料提供自動導航,不對資料結果做過多的處理,使得使用者更容

多表查詢sql語句5

關聯表 多表查詢 HERE from join eal where sso sql語句 學生表student(id,name)老師表teacher(id,name)課程表lesson(id,name)老師和課程關聯表(id,teacher_id,lesson_id)學生和課

sql server和my sql 命令語句的區別,sql server與mysql的比較

  sql與mysql的比較 1、連線字串 sql  :Initial Catalog(database)=x;  --資料庫名稱       Data S

Oracle資料庫SQL語句

一、 建立表空間 create tablespace itheima datafile 'C:\itheima.dbf' size 100m autoextend on next 10m; 二、 建立使用者 create user itshunzi ident

Spark SQL 筆記(15)——實戰網站日誌分析5資料視覺化

1 常見的視覺化框架 echarts highcharts d3.js HUE Zeppelin 2 建立 Web 專案 下載Echarts的檔案放到此目錄 http://echarts.bai

SQL Server On Linux5——Linux上新增磁碟

接上文:SQL Server On Linux(4)——Linux 初步配置 隨著資料庫的使用時間越來越久,空間問題越顯突出。這個時候其中一個手段就是加空間。很多時候是通過加磁碟來實現。在很多規範化的企業裡面,有專門的IT人員負責運維伺服器,DBA通常只負責管理資料庫。但是作