三、ClickHouse基礎(chǔ):數(shù)據(jù)類(lèi)型

3.1 數(shù)據(jù)類(lèi)型

MySQL ClickHouse
byte Int8
short Int16
int Int32
long Int64
varchar String
timestamp DateTime
float Float32
double Float64
boolean 無(wú)

3.1.1 整形

固定長(zhǎng)度的整型,包括有符號(hào)整型或無(wú)符號(hào)整型。

整型范圍(-2n-1~2n-1-1):

Int8 - [-128 : 127]

Int16 - [-32768 : 32767]

Int32 - [-2147483648 : 2147483647]

Int64 - [-9223372036854775808 : 9223372036854775807]

無(wú)符號(hào)整型范圍(0~2n-1):

固定長(zhǎng)度的整型,包括有符號(hào)整型或無(wú)符號(hào)整型。

整型范圍(-2n-1~2n-1-1):

Int8 - [-128 : 127]

Int16 - [-32768 : 32767]

Int32 - [-2147483648 : 2147483647]

Int64 - [-9223372036854775808 : 9223372036854775807]

無(wú)符號(hào)整型范圍(0~2n-1):

UInt8 - [0 : 255]

UInt16 - [0 : 65535]

UInt32 - [0 : 4294967295]

UInt64 - [0 : 18446744073709551615]

3.1.2 浮點(diǎn)型

Float32 - float

Float64 – double

建議盡可能以整數(shù)形式存儲(chǔ)數(shù)據(jù)。例如,將固定精度的數(shù)字轉(zhuǎn)換為整數(shù)值,如時(shí)間用毫秒為單位表示,因?yàn)楦↑c(diǎn)型進(jìn)行計(jì)算時(shí)可能引起四舍五入的誤差。

3.1.3 布爾型

沒(méi)有單獨(dú)的類(lèi)型來(lái)存儲(chǔ)布爾值。可以使用 UInt8 類(lèi)型,取值限制為 0 或 1。

3.1.4 字符串

1)String

字符串可以任意長(zhǎng)度的。它可以包含任意的字節(jié)集,包含空字節(jié)。

2)FixedString(N)

固定長(zhǎng)度 N 的字符串,N 必須是嚴(yán)格的正自然數(shù)。當(dāng)服務(wù)端讀取長(zhǎng)度小于 N 的字符串時(shí)候,通過(guò)在字符串末尾添加空字節(jié)來(lái)達(dá)到 N 字節(jié)長(zhǎng)度。 當(dāng)服務(wù)端讀取長(zhǎng)度大于 N 的字符串時(shí)候,將返回錯(cuò)誤消息。

與String相比,極少會(huì)使用FixedString,因?yàn)槭褂闷饋?lái)不是很方便。

3.1.5 枚舉類(lèi)型

包括 Enum8 和 Enum16 類(lèi)型。Enum 保存 'string'= integer 的對(duì)應(yīng)關(guān)系。

Enum8 用 'String'= Int8 對(duì)描述。

Enum16 用 'String'= Int16 對(duì)描述。

創(chuàng)建一個(gè)帶有一個(gè)枚舉 Enum8('hello' = 1, 'world' = 2) 類(lèi)型的列:

CREATE TABLE t_enum
 (
  x Enum8('hello' = 1, 'world' = 2)
 )
 ENGINE = TinyLog

這個(gè) x 列只能存儲(chǔ)類(lèi)型定義中列出的值:'hello'或'world'。如果嘗試保存任何其他值,ClickHouse 拋出異常。

img
img

3.1.4 數(shù)組

Array(T)由 T 類(lèi)型元素組成的數(shù)組。

T 可以是任意類(lèi)型,包含數(shù)組類(lèi)型。 但不推薦使用多維數(shù)組,ClickHouse 對(duì)多維數(shù)組的支持有限。例如,不能在 MergeTree 表中存儲(chǔ)多維數(shù)組。

可以使用array函數(shù)來(lái)創(chuàng)建數(shù)組:array(T)

也可以使用方括號(hào):[]

創(chuàng)建數(shù)組案例:

img

3.1.5 元組

Tuple(T1, T2, ...):元組,其中每個(gè)元素都有單獨(dú)的類(lèi)型。

創(chuàng)建元組的示例:

img

3.1.6 Date

日期類(lèi)型,用兩個(gè)字節(jié)存儲(chǔ),表示從 1970-01-01 (無(wú)符號(hào)) 到當(dāng)前的日期值。

3.2 SQL語(yǔ)法

3.2.1 ALL 子句

SELECT ALLSELECT 不帶 DISTINCT 是一樣的。

  • 如果指定了 ALL ,則忽略它。

  • 如果同時(shí)指定了 ALLDISTINCT ,則會(huì)拋出異常。

3.2.2 ARRAY JOIN子句

對(duì)于包含數(shù)組列的表來(lái)說(shuō)是一種常見(jiàn)的操作,用于生成一個(gè)新表,該表具有包含該初始列中的每個(gè)單獨(dú)數(shù)組元素的列,而其他列的值將被重復(fù)顯示。 這是 ARRAY JOIN 語(yǔ)句最基本的場(chǎng)景。

  • ARRAY JOIN - 一般情況下,空數(shù)組不包括在結(jié)果中 JOIN.

  • LEFT ARRAY JOIN - 的結(jié)果 JOIN 包含具有空數(shù)組的行。 空數(shù)組的值設(shè)置為數(shù)組元素類(lèi)型的默認(rèn)值(通常為0、空字符串或NULL)。

3.2.3 DISTINCT子句

如果 SELECT DISTINCT 被聲明,則查詢(xún)結(jié)果中只保留唯一行。 因此,在結(jié)果中所有完全匹配的行集合中,只有一行被保留。

3.2.4 FORMAT子句

ClickHouse支持廣泛的 序列化格式 可用于查詢(xún)結(jié)果等。 有多種方法可以選擇格式化 SELECT 的輸出,其中之一是指定 FORMAT format 在查詢(xún)結(jié)束時(shí)以任何特定格式獲取結(jié)果集。

3.2.5 FORM子句

FROM 子句指定從以下數(shù)據(jù)源中讀取數(shù)據(jù):

JOINARRAY JOIN 子句也可以用來(lái)擴(kuò)展 FROM 的功能。

3.2.6 GROUP BY子句

GROUP BY 子句將 SELECT 查詢(xún)結(jié)果轉(zhuǎn)換為聚合模式,其工作原理如下:

  • GROUP BY 子句包含表達(dá)式列表(或單個(gè)表達(dá)式 -- 可以認(rèn)為是長(zhǎng)度為1的列表)。 這份名單充當(dāng) “grouping key”,而每個(gè)單獨(dú)的表達(dá)式將被稱(chēng)為 “key expressions”.

  • 在所有的表達(dá)式在 SELECT, HAVING,和 ORDER BY 子句中 必須 基于鍵表達(dá)式進(jìn)行計(jì)算 聚合函數(shù) 在非鍵表達(dá)式(包括純列)上。 換句話(huà)說(shuō),從表中選擇的每個(gè)列必須用于鍵表達(dá)式或聚合函數(shù)內(nèi),但不能同時(shí)使用。

  • 聚合結(jié)果 SELECT 查詢(xún)將包含盡可能多的行,因?yàn)橛形ㄒ恢?“grouping key” 在源表中。 通常這會(huì)顯著減少行數(shù),通常是數(shù)量級(jí),但不一定:如果所有行數(shù)保持不變 “grouping key” 值是不同的。

3.2.7 HAVING 子句

允許過(guò)濾由 GROUP BY 生成的聚合結(jié)果. 它類(lèi)似于 WHERE ,但不同的是 WHERE 在聚合之前執(zhí)行,而 HAVING 之后進(jìn)行。

可以從 SELECT 生成的聚合結(jié)果中通過(guò)他們的別名來(lái)執(zhí)行 HAVING 子句。 或者 HAVING 子句可以篩選查詢(xún)結(jié)果中未返回的其他聚合的結(jié)果

3.2.8 INTO OUTFILE 子句

添加 INTO OUTFILE filename 子句(其中filename是字符串) SELECT query 將其輸出重定向到客戶(hù)端上的指定文件。

3.2.9 JOIN子句

Join通過(guò)使用一個(gè)或多個(gè)表的公共值合并來(lái)自一個(gè)或多個(gè)表的列來(lái)生成新表。 它是支持SQL的數(shù)據(jù)庫(kù)中的常見(jiàn)操作,它對(duì)應(yīng)于 關(guān)系代數(shù) 加入。 一個(gè)表連接的特殊情況通常被稱(chēng)為 “self-join”.

所有標(biāo)準(zhǔn) SQL JOIN 支持類(lèi)型:

  • INNER JOIN,只返回匹配的行。

  • LEFT OUTER JOIN,除了匹配的行之外,還返回左表中的非匹配行。

  • RIGHT OUTER JOIN,除了匹配的行之外,還返回右表中的非匹配行。

  • FULL OUTER JOIN,除了匹配的行之外,還會(huì)返回兩個(gè)表中的非匹配行。

  • CROSS JOIN,產(chǎn)生整個(gè)表的笛卡爾積, “join keys” 是 指定。

3.2.10 LIMIT子句

LIMIT m 允許選擇結(jié)果中起始的 m 行。

LIMIT n, m 允許選擇個(gè) m 從跳過(guò)第一個(gè)結(jié)果后的行 n 行。 與 LIMIT m OFFSET n 語(yǔ)法是等效的。

LIMIT … WITH TIES 修飾符:

如果為 LIMIT n[,m] 設(shè)置了 WITH TIES ,并且聲明了 ORDER BY expr_list, 除了得到無(wú)修飾符的結(jié)果(正常情況下的 limit n, 前n行數(shù)據(jù)), 還會(huì)返回與第n行具有相同排序字段的行(即如果第n+1行的字段與第n行 擁有相同的排序字段,同樣返回該結(jié)果.

此修飾符可以與: ORDER BY … WITH FILL modifier 組合使用.

3.2.11 LIMIT BY子句

與查詢(xún) LIMIT n BY expressions 子句選擇第一個(gè) n 每個(gè)不同值的行 expressions. LIMIT BY 可以包含任意數(shù)量的 表達(dá)式.

SELECT * from hits_v1 limit 17,1 BY CounterID;
SELECT * from hits_v1 limit 1 OFFSET 17 BY CounterID;
--上面sql查詢(xún)結(jié)果一致。假如表中有18條數(shù)據(jù)CounterID為1964542331,上面sql語(yǔ)句含義為跳過(guò)17條數(shù)據(jù),limit 1:查詢(xún)一條。

3.2.12 時(shí)間或日期截取函數(shù)(to)—— 返回非日期

函數(shù) 用途 舉例 結(jié)果
toYear() 取日期或時(shí)間日期的年份 toYear(toDateTime(‘2018-12-11 11:12:13’)) toYear(toDate(‘2018-12-11’)) 返回 2018
toMonth() 取日期或時(shí)間日期的月份 toMonth(toDateTime(‘2018-12-11 11:12:13’)) toMonth(toDate(‘2018-12-11’)) 返回 12
toDayOfMonth() 取日期或時(shí)間日期的天(1-31) toMonth(toDayOfMonth(‘2018-12-11 11:12:13’)) 返回 11
toDayOfWeek() 取日期或時(shí)間日期的星期(星期一為1,星期日為7)。 toDayOfWeek(toDateTime(‘2018-12-11 11:12:13’)) 返回 2
toHour() 取時(shí)間日期的小時(shí) toHour(toDateTime(‘2018-12-11 11:12:13’)) 返回 11
toMinute() 取時(shí)間日期的分鐘 toMinute(toDateTime(‘2018-12-11 11:12:13’)) 返回 12
toSecond() 取時(shí)間日期的秒 toSecond(toDateTime(‘2018-12-11 11:12:13’)) 返回 13
toMonday() 取時(shí)間日期最近的周一(返回日期) toMonday(toDate(‘2018-12-11’)) toMonday(toDateTime(‘2018-12-11 11:12:13’)) 返回 2018-12-10
toTime() 將時(shí)間日期的日期固定到某一天,保留原始時(shí)間 toTime(toDateTime(‘2018-12-11 11:12:13’)) 返回 1970-01-02 11:12:13

3.2.13 時(shí)間或日期截取函數(shù)(toStartOf)—— 返回日期

函數(shù) 用途 舉例 結(jié)果
toStartOfMonth() 取日期或時(shí)間日期的月份的第一天,返回日期 toStartOfMonth(toDateTime(‘2018-12-11 11:12:13’))toStartOfMonth(toDate(‘2018-12-11’)) 2018-12-01;
toStartOfQuarter() 取日期或時(shí)間日期的季度的第一天,返回日期 toStartOfQuarter(toDateTime(‘2018-12-11 11:12:13’)) 返回 2018-10-01
toStartOfYear() 取日期或時(shí)間日期的年份的第一天,返回日期 toStartOfYear(toDateTime(‘2018-12-11 11:12:13’))toStartOfYear(toDate(‘2018-12-11’)) 返回 2018-01-01
toStartOfMinute() 截取時(shí)間日期到分鐘(之后歸零),返回日期 toStartOfMinute(toDateTime(‘2018-12-11 11:12:13’)) 返回 2018-12-11 11:12:00
toStartOfFiveMinute() 截取時(shí)間日期到最近的5的倍數(shù)分鐘(之后歸零),返回日期 toStartOfFiveMinute(toDateTime(‘2018-12-11 11:12:13’)) 返回 2018-12-11 11:10:00
toStartOfFifteenMinutes() 截取時(shí)間日期到最近的15的倍數(shù)分鐘(之后歸零),返回日期 toStartOfFifteenMinutes(toDateTime(‘2018-12-11 11:12:13’)) 返回 2018-12-11 11:00:00
toStartOfHour() 截取時(shí)間日期到小時(shí)(之后歸零),返回日期 toStartOfHour(toDateTime(‘2018-12-11 11:12:13’)) 返回 2018-12-11 11:00:00
toStartOfDay() 截取時(shí)間日期到天(之后歸零),返回日期 toStartOfDay(toDateTime(‘2018-12-11 11:12:13’)) 返回 2018-12-11 00:00:00
timeSlot() 將時(shí)間日期中,分鐘大于等于30的歸于30,分鐘數(shù)小于30的歸為00 timeSlot(toDateTime(‘2018-12-11 11:33:13’))timeSlot(toDateTime(‘2018-12-11 11:33:13’)) 返回 2018-12-11 11:00:00返回 2018-12-11 11:30:00

3.2.14 日期或時(shí)間日期生成函數(shù)

函數(shù) 用途 舉例 結(jié)果
now() 生成當(dāng)前時(shí)間日期 now() 返回 2018-12-13 10:10:12
today() 生成今天的日期 today() 返回 2018-12-13
yesterday() 生成昨天的日期 yesterday() 返回 2018-12-12

3.2.15 精度保留(非四舍五入)

函數(shù) 用途 舉例 結(jié)果
toDecimal32(‘whdwjfew’,8) 將數(shù)值型或者含有非數(shù)字的字符串進(jìn)行精度保留 toDecimal32(23.12291, 3) ; toDecimal32(’_23.12291’, 3) 返回 23.122返回 0.000
toDecimal64(‘whdwjfew’,8) 將數(shù)值型或者含有非數(shù)字的字符串進(jìn)行精度保留 toDecimal64(23.12291, 3); toDecimal64(’_23.12291’, 3) 返回 23.122返回 0.000
toDecimal128(‘whdwjfew’,8) 將數(shù)值型或者含有非數(shù)字的字符串進(jìn)行精度保留 toDecimal128(23.12291, 3); toDecimal128(’_23.12291’, 3) 返回 23.122返回 0.000

3.2.16 字符串轉(zhuǎn)化為整數(shù)(非整數(shù)的字符串返回0)

函數(shù) 用途 舉例 結(jié)果
toUInt8OrZero() 將無(wú)符號(hào)整數(shù)字符型轉(zhuǎn)化為整數(shù)型,否則返回0 toUInt8OrZero(‘123’); toUInt8OrZero(‘123.12’) 返回 123; 返回 0
toInt8OrZero() 將整數(shù)字符型轉(zhuǎn)化為整數(shù)型,否則返回0 toInt8OrZero(‘123’); toInt8OrZero(’-123’) 返回 123 ; 返回 -123
toFloat32OrZero() 將數(shù)值字符串型轉(zhuǎn)化為數(shù)值型,注意:從toFloat32OrZero開(kāi)始,丟32的沒(méi)有對(duì)應(yīng)的函數(shù) toFloat32OrZero(‘-123’); toFloat32OrZero(‘123.123’) 返回 -123; 返回 123.123

3.2.17 日期與時(shí)間日期轉(zhuǎn)化

函數(shù) 用途 舉例 結(jié)果
toDate() 將字符型日期轉(zhuǎn)化為日期型 toDate(‘2018-12-24’) 返回 2018-12-24
toDateTime() 將字符型時(shí)間日期轉(zhuǎn)化為時(shí)間日期型 toDateTime(‘2018-12-24 10:10:00’) 返回 2018-12-24 10:10:00

3.2.18 轉(zhuǎn)化為字符型

函數(shù) 用途 舉例 結(jié)果
toString() 將數(shù)值型、字符型、日期等轉(zhuǎn)化為字符型 toString(‘2018-12-24’)toString(‘123’) 返回 2018-12-24返回 123

3.2.19 查看數(shù)據(jù)類(lèi)型

函數(shù) 用途 舉例 結(jié)果
toTypeName() 返回?cái)?shù)據(jù)的類(lèi)型 toTypeName(toString(‘123’))toTypeName(toDate(‘2018-12-24’)) 返回 String返回 Date

3.2.20 基本字符串操作

函數(shù) 用途 舉例 結(jié)果
empty() 判斷字符串是空為1,否則為0 empty(’’); empty(‘123a’) 返回 1;返回 0
notEmpty() 判斷字符串是非空為1,否則為0 notEmpty(’’); notEmpty(‘123a’) 返回 0;返回 1
length() 返回字符串的長(zhǎng)度 length(’’); length(‘123a’) 返回 0;返回 4
lower() 將字符串轉(zhuǎn)為小寫(xiě) lower(‘a(chǎn)Bc’) 返回 abc
upper() 將字符串轉(zhuǎn)為大寫(xiě) upper(‘a(chǎn)Bc’) 返回 ABC
reverse() 將字符串反轉(zhuǎn) reverse(‘a(chǎn)bc’) 返回 cba
substring(s, offset, length) 字符串截取 substring(‘123abcABC’, 2, 3) 返回 23a
appendTrailingCharIfAbsent(s, c) 如果字符串s非空,則將s后追加一個(gè)字符c(s最后一個(gè)字符與c不同),否則不處理 appendTrailingCharIfAbsent(‘123abc’, ‘b’); appendTrailingCharIfAbsent(‘123abc’, ‘c’) 返回 123abcb返回 123abc

3.2.21 字符串查找

函數(shù) 用途 舉例 結(jié)果
match(haystack,pattern) 字符串正則匹配,返回0或1 match(‘a(chǎn)vhsca’,'vh’) 返回 1
extract(haystack,pattern) 返回匹配到的第一個(gè)子串 extract(‘iioomAj12123124OOBJB’, ‘\d+’) 返回 12123124
extractAll(haystack,pattern) 返回匹配到的所有子串,輸出列表 extractAll(‘iioomAj12123124OOBJ123B’, ‘\d+’) 返回 [12123124,123]
like(haystack,pattern) 匹配到的數(shù)據(jù)返回1,否則返回0 like(‘a(chǎn)vhsca’,’%vh%’); like(‘a(chǎn)vhsca’,’%vabjh%’) 返回 1返回 0
notLike(haystack, pattern) 與like()函數(shù)相反 notLike(‘a(chǎn)vhsca’,’%vh%’); notLike(‘a(chǎn)vhsca’,’%vabjh%’) 返回 0返回 1

3.2.22 字符串替換

函數(shù) 用途 舉例 結(jié)果
replaceOne(haystack,pattern,replacement) 替換第一個(gè)匹配到的pattern replaceOne(‘a(chǎn)sd123cbbj464sd’, ‘sd’, ‘-’) 返回 a-123cbbj464sd
replaceAll(haystack,pattern,replacement) 替換所有匹配到的pattern replaceOne(‘a(chǎn)sd123cbbj464sd’, ‘sd’, ‘-’) 返回 a-123cbbj464-
replaceRegexpOne(haystack, pattern, replacement) 正則匹配替換第一個(gè)匹配到的pattern replaceRegexpOne(‘Hello, World!’, ‘o’, '- ') 返回 Hell- , World!
replaceRegexpAll(haystack,pattern,replacement) 正則匹配替換所有匹配到的pattern replaceRegexpAll(‘Hello, World!’, ‘^’, 'here: ')replaceRegexpAll(‘Hello, World!’, ‘o’, '-- ') 返回 here: Hello, World!返回 Hell-- , W-- rld!

3.2.23 字符串分割

函數(shù) 用途 舉例 結(jié)果
splitByChar(separator, s) 以單個(gè)字符分割字符串 splitByChar(’-’, ‘qw-asaf-asfqw-2312-asd’) 返回 [‘qw’,‘a(chǎn)saf’,‘a(chǎn)sfqw’,‘2312’,‘a(chǎn)sd’]
splitByString(separator, s) 以單個(gè)或多個(gè)字符分割字符串 splitByString(’-’, ‘qw-asaf-asfqw-2312-asd’); splitByString(’-a’, ‘qw-asaf-asfqw-2312-asd’) 返回 [‘qw’,‘a(chǎn)saf’,‘a(chǎn)sfqw’,‘2312’,‘a(chǎn)sd’]返回 [‘qw’,‘saf’,‘sfqw-2312’,‘sd’]

3.2.24 字符串拼接

函數(shù) 用途 舉例 結(jié)果
concat(s1,s2,…) 將字符串拼接 concat(‘123’, ‘a(chǎn)bc’, ‘ABC’) 返回 123abcABC

3.2.25 條件語(yǔ)句

函數(shù) 用途 舉例 結(jié)果
if(cond,then,else) 條件輸出 if(1 > 2, ‘正確’, ‘錯(cuò)誤’) 返回 錯(cuò)誤
multiIf(cond_1, then_1, cond_2, then_2…else) 多條件輸出 multiIf(1 > 2, ‘正確’, 2 < 0, ‘正確’, ‘錯(cuò)誤’) 返回 錯(cuò)誤

3.2.26 數(shù)學(xué)函數(shù)

函數(shù) 用途 舉例 結(jié)果
e() 返回e的值 e() 返回 2.718281828459045
pi() 返回pi的值 pi() 返回 3.141592653589793
exp(x) 返回e的x次方 exp(1) 返回 2.718281828459045
exp2(x) 返回2的x次方 exp2(2) 返回 4
exp10(x) 返回10的x次方 exp10(1) 返回 10
log(x) 返回log以e為底的對(duì)數(shù)值 log(e()) 返回 1
log2(x) 返回log以2為底的對(duì)數(shù)值 log2(2) 返回 1
log10(x) 返回log以10為底的對(duì)數(shù)值 log10(100) 返回 2
sqrt(x) 對(duì)x開(kāi)平方 sqrt(4) 返回 2
cbrt(x) 對(duì)x開(kāi)立方 cbrt(8) 返回 2
pow(x, y) 返回x的y次方 pow(2, 3) 返回 8

3.2.27 舍入函數(shù)

函數(shù) 用途 舉例 結(jié)果
floor(x[, N]) 向下取數(shù) floor(123.883, 1)floor(123.883, -1) 返回 123.8返回 120
ceil(x[, N]) 向上取數(shù) ceil(123.883, 1)ceil(123.883, -1) 返回 123.9返回 130
round(x[, N]) 四舍五入 round(123.883, 1)round(123.883, -1) 返回 123.9返回 120

3.2.28 URL操作函數(shù)

函數(shù) 用途 舉例 結(jié)果
protocol() 返回URL的協(xié)議類(lèi)型 protocol(‘http://www.baidu.com.cn’) 返回 http
domain() 返回URL的域名 domain(‘http://www.baidu.com.cn’) 返回 www.baidu.com.cn
domainWithoutWWW() 返回URL不帶www的域名 domainWithoutWWW(‘http://www.baidu.com.cn’) 返回 baidu.com.cn
topLevelDomain() 返回頂級(jí)域名 topLevelDomain(‘http://www.baidu.com.cn’) 返回 cn
firstSignificantSubdomain() 返回“第一個(gè)重要子域”。 firstSignificantSubdomain(‘http://www.baidu.com.cn’) 返回 baidu
cutToFirstSignificantSubdomain() 返回域中包含頂級(jí)子域直至“第一個(gè)重要子域”的部分(參見(jiàn)上面的解釋?zhuān)?/td> cutToFirstSignificantSubdomain(‘http://www.baidu.com.cn’) 返回 baidu.com.cn
path() 返回URL的路徑 path(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split’) 返回 /s
pathFull() 返回URL的完整路徑 pathFull(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split’) 返回 /s?wd=SQL%E4%B8%AD%E7%9A%84split
queryString() 返回URL的參數(shù)(查詢(xún)字符串) queryString(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split’) 返回 wd=SQL%E4%B8%AD%E7%9A%84split
extractURLParameters() 以列表的形式返回URL的參數(shù) extractURLParameters(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split&ur=qwguq’) 返回 [‘wd=SQL%E4%B8%AD%E7%9A%84split’,‘ur=qwguq’]
extractURLParameterNames() 以列表的形式返回URL的參數(shù)名 extractURLParameterNames(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split&ur=qwguq’) 返回 [‘wd’,‘ur’]
cutQueryString() 返回URL?(參數(shù))前面的內(nèi)容 cutQueryString(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split&ur=qwguq’) 返回 https://www.baidu.com/s

3.2.29 IP操作函數(shù)

函數(shù) 用途 舉例 結(jié)果
IPv4StringToNum(s) 將IPV4轉(zhuǎn)為數(shù)值,非IPV4的轉(zhuǎn)化為0 IPv4StringToNum(‘23.217.198.69’); IPv4StringToNum(‘a(chǎn)dwh.124.qwfqw’) 返回 400148037返回 0
IPv4NumToString(num) 將數(shù)值轉(zhuǎn)為IPV4 IPv4NumToString(400148037) 返回 23.217.198.69
IPv4NumToStringClassC(num) 將數(shù)值轉(zhuǎn)為IPV4,且最后的段位用xxx代替 IPv4NumToStringClassC(400148037) 返回 23.217.198.xxx

3.2.30 表連接操作

函數(shù) 用途 舉例 結(jié)果
INNER JOIN 內(nèi)連接 A表 INNER JOIN B表 A表與B表的公共部分
LEFT OUTER JOIN 左外連接 A 表 LEFT OUTER JOIN B表 A表不在B表中的部分
RIGHT OUTER JOIN 右外連接 A 表 RIGHT OUTER JOIN B表 B表不在A表中的部分
FULL OUTER JOIN 全外連接 A 表 FULL OUTER JOIN B表 A與B表全部,沒(méi)有為NULL

3.2.31 LIMIT操作

函數(shù) 用途 舉例 結(jié)果
LIMIT N 查詢(xún)N條數(shù)據(jù),一般跟ORDER BY 連用 ORDER BY hit DESC LIMIT 10 按照hit列降排取前10
LIMIT N BY Clause 按照Clause列查詢(xún)N條數(shù)據(jù),一般跟ORDER BY 連用 SELECT date, domain, count(1) AS hit from db.tb where…GROUP BY date, domain,ORDER BY hit DESCLIMIT 10 BY date 取每天TOP10的域名
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容