Oracle/Hive/Impala SQL比較(5)
功能 | 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以後 | 有 |
功能 | 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 |
功能 | 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全過程以impala、hive、Spark效能比較-(三)cloudera manager 安裝impala成功並對impala、hive進行簡單測試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三種動態sql(5)內部 轉換成 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; -- Hadoop(5)--hiveasto ges -h alt dbms sql語句 元數據 reduce report 在Hadoop的存儲處理方面提供了兩種不同的機制,一種是之前介紹過的Hbase,另外一種就是Hive,有關於Hbase,它是一種nosql數據庫的一種,是一種數據庫,基於分布式的列式存 T-SQL執行內幕(5)——執行本文屬於SQL Server T-SQL執行內幕系列 一旦優化器選擇了開銷最低的預估執行計劃之後,就會把預估執行計劃轉換成實際執行樹(Actual Execution Tree)進行查詢執行。樹的每個節點都是一個操作符 大資料晉級之路(5)Hadoop,Spark,Storm綜合比較大資料框架:Spark vs Hadoop vs Storm 目錄 Hadoop Spark Storm 大資料時代,TB級甚至PB級資料已經超過單機尺度的資料處理,分散式處理系統應運而生。 知識預熱 「專治不明覺厲」之“大資料 Phoenix(5):SQuirreL SQL Client 連線 phoenix1.工具簡介 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 Linux(5)——Linux上新增磁碟接上文:SQL Server On Linux(4)——Linux 初步配置 隨著資料庫的使用時間越來越久,空間問題越顯突出。這個時候其中一個手段就是加空間。很多時候是通過加磁碟來實現。在很多規範化的企業裡面,有專門的IT人員負責運維伺服器,DBA通常只負責管理資料庫。但是作 |