10-function.md 39.5 KB
Newer Older
1
---
2 3
sidebar_label: 函数
title: 函数
4
toc_max_heading_level: 4
5 6
---

7
## 单行函数
8

9
单行函数为查询结果中的每一行返回一个结果行。
10

11
### 数学函数
12

13
#### ABS
14

15
```sql
G
gccgdb1234 已提交
16
SELECT ABS(field_name) FROM { tb_name | stb_name } [WHERE clause]
17
```
18

19
**功能说明**:获得指定字段的绝对值。
20

21
**返回结果类型**:与指定字段的原始数据类型一致。
22

G
gccgdb1234 已提交
23
**适用数据类型**:数值类型。
24

25
**嵌套子查询支持**:适用于内层查询和外层查询。
26

27
**适用于**: 表和超级表。
28

29
**使用说明**:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
30

31
#### ACOS
32

33
```sql
G
gccgdb1234 已提交
34
SELECT ACOS(field_name) FROM { tb_name | stb_name } [WHERE clause]
35 36
```

37
**功能说明**:获得指定字段的反余弦结果。
38

39
**返回结果类型**:DOUBLE。
40

G
gccgdb1234 已提交
41
**适用数据类型**:数值类型。
42

43
**嵌套子查询支持**:适用于内层查询和外层查询。
44

45
**适用于**: 表和超级表。
46

47
**使用说明**:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
48

49
#### ASIN
50

51
```sql
G
gccgdb1234 已提交
52
SELECT ASIN(field_name) FROM { tb_name | stb_name } [WHERE clause]
53 54
```

55
**功能说明**:获得指定字段的反正弦结果。
56

57
**返回结果类型**:DOUBLE。
58

G
gccgdb1234 已提交
59
**适用数据类型**:数值类型。
60

61
**嵌套子查询支持**:适用于内层查询和外层查询。
62

63
**适用于**: 表和超级表。
64

65
**使用说明**:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
66 67


68
#### ATAN
69

70
```sql
G
gccgdb1234 已提交
71
SELECT ATAN(field_name) FROM { tb_name | stb_name } [WHERE clause]
72 73
```

74
**功能说明**:获得指定字段的反正切结果。
75

76
**返回结果类型**:DOUBLE。
77

G
gccgdb1234 已提交
78
**适用数据类型**:数值类型。
79

80
**嵌套子查询支持**:适用于内层查询和外层查询。
81

82
**适用于**: 表和超级表。
83

84
**使用说明**:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
85

86 87

#### CEIL
88

G
gccgdb1234 已提交
89
```sql
90
SELECT CEIL(field_name) FROM { tb_name | stb_name } [WHERE clause];
91 92
```

93
**功能说明**:获得指定字段的向上取整数的结果。
94

95
**返回结果类型**:与指定字段的原始数据类型一致。
96

G
gccgdb1234 已提交
97
**适用数据类型**:数值类型。
98

99
**适用于**: 表和超级表。
100

101
**嵌套子查询支持**:适用于内层查询和外层查询。
102

103
**使用说明**: 只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
104

105
#### COS
106

107
```sql
G
gccgdb1234 已提交
108
SELECT COS(field_name) FROM { tb_name | stb_name } [WHERE clause]
109 110
```

111
**功能说明**:获得指定字段的余弦结果。
112

113
**返回结果类型**:DOUBLE。
114

G
gccgdb1234 已提交
115
**适用数据类型**:数值类型。
116 117

**嵌套子查询支持**:适用于内层查询和外层查询。
118

119
**适用于**: 表和超级表。
120

121
**使用说明**:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
122

123
#### FLOOR
124

G
gccgdb1234 已提交
125
```sql
126
SELECT FLOOR(field_name) FROM { tb_name | stb_name } [WHERE clause];
127 128
```

129
**功能说明**:获得指定字段的向下取整数的结果。  
130
 其他使用说明参见 CEIL 函数描述。
131

132 133 134
#### LOG

```sql
135
SELECT LOG(field_name[, base]) FROM { tb_name | stb_name } [WHERE clause]
136 137
```

138
**功能说明**:获得指定字段对于底数 base 的对数。如果 base 参数省略,则返回指定字段的自然对数值。
139

140
**返回结果类型**:DOUBLE。
141

G
gccgdb1234 已提交
142
**适用数据类型**:数值类型。
143

144
**嵌套子查询支持**:适用于内层查询和外层查询。
145

146
**适用于**: 表和超级表。
147

148
**使用说明**:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
149 150


151
#### POW
152

153
```sql
G
gccgdb1234 已提交
154
SELECT POW(field_name, power) FROM { tb_name | stb_name } [WHERE clause]
155
```
156

157
**功能说明**:获得指定字段的指数为 power 的幂。
158

159
**返回结果类型**:DOUBLE。
160

G
gccgdb1234 已提交
161
**适用数据类型**:数值类型。
162

163
**嵌套子查询支持**:适用于内层查询和外层查询。
164

165
**适用于**: 表和超级表。
166

167
**使用说明**:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
168 169


170
#### ROUND
171

G
gccgdb1234 已提交
172
```sql
173
SELECT ROUND(field_name) FROM { tb_name | stb_name } [WHERE clause];
174 175
```

176
**功能说明**:获得指定字段的四舍五入的结果。  
177
 其他使用说明参见 CEIL 函数描述。
178 179


180
#### SIN
181

182
```sql
G
gccgdb1234 已提交
183
SELECT SIN(field_name) FROM { tb_name | stb_name } [WHERE clause]
184
```
185

186
**功能说明**:获得指定字段的正弦结果。
187

188
**返回结果类型**:DOUBLE。
189

G
gccgdb1234 已提交
190
**适用数据类型**:数值类型。
191

192
**嵌套子查询支持**:适用于内层查询和外层查询。
193

194
**适用于**: 表和超级表。
195

196
**使用说明**:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
197

198
#### SQRT
199

200
```sql
G
gccgdb1234 已提交
201
SELECT SQRT(field_name) FROM { tb_name | stb_name } [WHERE clause]
202
```
203

204
**功能说明**:获得指定字段的平方根。
205

206
**返回结果类型**:DOUBLE。
207

G
gccgdb1234 已提交
208
**适用数据类型**:数值类型。
209

210
**嵌套子查询支持**:适用于内层查询和外层查询。
211

212
**适用于**: 表和超级表。
213

214
**使用说明**:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
G
gccgdb1234 已提交
215

216 217 218
#### TAN

```sql
G
gccgdb1234 已提交
219
SELECT TAN(field_name) FROM { tb_name | stb_name } [WHERE clause]
G
gccgdb1234 已提交
220 221
```

222
**功能说明**:获得指定字段的正切结果。
G
gccgdb1234 已提交
223

224
**返回结果类型**:DOUBLE。
G
gccgdb1234 已提交
225

G
gccgdb1234 已提交
226
**适用数据类型**:数值类型。
G
gccgdb1234 已提交
227

228
**嵌套子查询支持**:适用于内层查询和外层查询。
G
gccgdb1234 已提交
229

230
**适用于**: 表和超级表。
G
gccgdb1234 已提交
231

232
**使用说明**:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
G
gccgdb1234 已提交
233

234
### 字符串函数
235

236
字符串函数的输入参数为字符串类型,返回结果为数值类型或字符串类型。
237

238
#### CHAR_LENGTH
239

G
gccgdb1234 已提交
240 241
```sql
SELECT CHAR_LENGTH(str|column) FROM { tb_name | stb_name } [WHERE clause]
242 243
```

244
**功能说明**:以字符计数的字符串长度。
245

246
**返回结果类型**:BIGINT。
247

248
**适用数据类型**:VARCHAR, NCHAR。
249

250
**嵌套子查询支持**:适用于内层查询和外层查询。
251

252
**适用于**: 表和超级表。
253

254
#### CONCAT
255

256
```sql
G
gccgdb1234 已提交
257
SELECT CONCAT(str1|column1, str2|column2, ...) FROM { tb_name | stb_name } [WHERE clause]
258 259
```

260
**功能说明**:字符串连接函数。
261

262
**返回结果类型**:如果所有参数均为 VARCHAR 类型,则结果类型为 VARCHAR。如果参数包含NCHAR类型,则结果类型为NCHAR。如果参数包含NULL值,则输出值为NULL。
263

G
gccgdb1234 已提交
264
**适用数据类型**:VARCHAR, NCHAR。 该函数最小参数个数为2个,最大参数个数为8个。
265

266
**嵌套子查询支持**:适用于内层查询和外层查询。
267

268
**适用于**: 表和超级表。
269 270


271
#### CONCAT_WS
272

G
gccgdb1234 已提交
273 274
```sql
SELECT CONCAT_WS(separator, str1|column1, str2|column2, ...) FROM { tb_name | stb_name } [WHERE clause]
275 276
```

277 278
**功能说明**:带分隔符的字符串连接函数。

279
**返回结果类型**:如果所有参数均为VARCHAR类型,则结果类型为VARCHAR。如果参数包含NCHAR类型,则结果类型为NCHAR。如果参数包含NULL值,则输出值为NULL。
280

G
gccgdb1234 已提交
281
**适用数据类型**:VARCHAR, NCHAR。 该函数最小参数个数为3个,最大参数个数为9个。
282 283 284

**嵌套子查询支持**:适用于内层查询和外层查询。

285
**适用于**: 表和超级表。
286 287 288


#### LENGTH
289

G
gccgdb1234 已提交
290 291
```sql
SELECT LENGTH(str|column) FROM { tb_name | stb_name } [WHERE clause]
292 293
```

294
**功能说明**:以字节计数的字符串长度。
295

296
**返回结果类型**:BIGINT。
297

G
gccgdb1234 已提交
298
**适用数据类型**:输入参数是 VARCHAR 类型或者 NCHAR 类型的字符串或者列。
299

300
**嵌套子查询支持**:适用于内层查询和外层查询。
301

302
**适用于**: 表和超级表。
303 304


305
#### LOWER
306

G
gccgdb1234 已提交
307 308
```sql
SELECT LOWER(str|column) FROM { tb_name | stb_name } [WHERE clause]
309 310
```

311
**功能说明**:将字符串参数值转换为全小写字母。
312

313
**返回结果类型**:与输入字段的原始类型相同。
314

315
**适用数据类型**:VARCHAR, NCHAR。
316

317
**嵌套子查询支持**:适用于内层查询和外层查询。
318

319
**适用于**: 表和超级表。
320 321


322
#### LTRIM
323

G
gccgdb1234 已提交
324 325
```sql
SELECT LTRIM(str|column) FROM { tb_name | stb_name } [WHERE clause]
326 327
```

328
**功能说明**:返回清除左边空格后的字符串。
329

330
**返回结果类型**:与输入字段的原始类型相同。
331

332
**适用数据类型**:VARCHAR, NCHAR。
333

334
**嵌套子查询支持**:适用于内层查询和外层查询。
335

336
**适用于**: 表和超级表。
337 338


339
#### RTRIM
340

G
gccgdb1234 已提交
341 342
```sql
SELECT LTRIM(str|column) FROM { tb_name | stb_name } [WHERE clause]
343 344
```

345
**功能说明**:返回清除右边空格后的字符串。
346

347
**返回结果类型**:与输入字段的原始类型相同。
348

349
**适用数据类型**:VARCHAR, NCHAR。
350

351
**嵌套子查询支持**:适用于内层查询和外层查询。
352

353
**适用于**: 表和超级表。
354 355


356
#### SUBSTR
357

G
gccgdb1234 已提交
358 359
```sql
SELECT SUBSTR(str,pos[,len]) FROM { tb_name | stb_name } [WHERE clause]
360 361
```

362
**功能说明**:从源字符串 str 中的指定位置 pos 开始取一个长度为 len 的子串并返回。如果输入参数 len 被忽略,返回的子串包含从 pos 开始的整个字串。
363

364
**返回结果类型**:与输入字段的原始类型相同。
365

366
**适用数据类型**:VARCHAR, NCHAR。输入参数 pos 可以为正数,也可以为负数。如果 pos 是正数,表示开始位置从字符串开头正数计算。如果 pos 为负数,表示开始位置从字符串结尾倒数计算。
367

368
**嵌套子查询支持**:适用于内层查询和外层查询。
369

370
**适用于**: 表和超级表。
371 372


373
#### UPPER
374

G
gccgdb1234 已提交
375 376
```sql
SELECT UPPER(str|column) FROM { tb_name | stb_name } [WHERE clause]
377 378
```

379
**功能说明**:将字符串参数值转换为全大写字母。
380

381
**返回结果类型**:与输入字段的原始类型相同。
382

383
**适用数据类型**:VARCHAR, NCHAR。
384

385
**嵌套子查询支持**:适用于内层查询和外层查询。
386

387
**适用于**: 表和超级表。
388 389


390
### 转换函数
391

392
转换函数将值从一种数据类型转换为另一种数据类型。
393

394
#### CAST
395

396
```sql
G
gccgdb1234 已提交
397
SELECT CAST(expression AS type_name) FROM { tb_name | stb_name } [WHERE clause]
398 399
```

400
**功能说明**:数据类型转换函数,返回 expression 转换为 type_name 指定的类型后的结果。只适用于 select 子句中。
401

402
**返回结果类型**:CAST 中指定的类型(type_name)。
403

404 405 406 407 408
**适用数据类型**:输入参数 expression 的类型可以是BLOB、MEDIUMBLOB和JSON外的所有类型。

**嵌套子查询支持**:适用于内层查询和外层查询。

**适用于**: 表和超级表。
409

410 411 412 413 414 415 416 417 418 419 420
**使用说明**

- 对于不能支持的类型转换会直接报错。
- 对于类型支持但某些值无法正确转换的情况对应的转换后的值以转换函数输出为准。目前可能遇到的几种情况:
        1)字符串类型转换数值类型时可能出现的无效字符情况,例如"a"可能转为0,但不会报错。
        2)转换到数值类型时,数值大于type_name可表示的范围时,则会溢出,但不会报错。
        3)转换到字符串类型时,如果转换后长度超过type_name的长度,则会截断,但不会报错。

#### TO_ISO8601

```sql
421
SELECT TO_ISO8601(ts[, timezone]) FROM { tb_name | stb_name } [WHERE clause];
422 423
```

424
**功能说明**:将 UNIX 时间戳转换成为 ISO8601 标准的日期时间格式,并附加时区信息。timezone 参数允许用户为输出结果指定附带任意时区信息。如果 timezone 参数省略,输出结果附带当前客户端的系统时区信息。
425

G
gccgdb1234 已提交
426
**返回结果数据类型**:VARCHAR 类型。
427

428
**适用数据类型**:INTEGER, TIMESTAMP。
429

430 431 432
**嵌套子查询支持**:适用于内层查询和外层查询。

**适用于**: 表和超级表。
433 434 435

**使用说明**

436 437
- timezone 参数允许输入的时区格式为: [z/Z, +/-hhmm, +/-hh, +/-hh:mm]。例如,TO_ISO8601(1, "+00:00")。
- 如果输入是表示 UNIX 时间戳的整形,返回格式精度由时间戳的位数决定; 
438
- 如果输入是 TIMSTAMP 类型的列,返回格式的时间戳精度与当前 DATABASE 设置的时间精度一致。
439 440


441
#### TO_JSON
442

443 444
```sql
SELECT TO_JSON(str_literal) FROM { tb_name | stb_name } [WHERE clause];
445 446
```

447
**功能说明**: 将字符串常量转换为 JSON 类型。
448

449
**返回结果数据类型**: JSON。
450

451
**适用数据类型**: JSON 字符串,形如 '{ "literal" : literal }'。'{}'表示空值。键必须为字符串字面量,值可以为数值字面量、字符串字面量、布尔字面量或空值字面量。str_literal中不支持转义符。
452

453
**嵌套子查询支持**:适用于内层查询和外层查询。
454

455 456
**适用于**: 表和超级表。

457

458
#### TO_UNIXTIMESTAMP
459

460
```sql
461
SELECT TO_UNIXTIMESTAMP(datetime_string) FROM { tb_name | stb_name } [WHERE clause];
462
```
463

464
**功能说明**:将日期时间格式的字符串转换成为 UNIX 时间戳。
465

466
**返回结果数据类型**:BIGINT。
467

468
**应用字段**:VARCHAR, NCHAR。
469

470 471 472
**嵌套子查询支持**:适用于内层查询和外层查询。

**适用于**:表和超级表。
473

474
**使用说明**
475

476
- 输入的日期时间字符串须符合 ISO8601/RFC3339 标准,无法转换的字符串格式将返回 NULL。
477
- 返回的时间戳精度与当前 DATABASE 设置的时间精度一致。
478 479


480
### 时间和日期函数
481

482
时间和日期函数对时间戳类型进行操作。
483

484
所有返回当前时间的函数,如NOW、TODAY和TIMEZONE,在一条SQL语句中不论出现多少次都只会被计算一次。
485

486
#### NOW
487

488 489 490 491
```sql
SELECT NOW() FROM { tb_name | stb_name } [WHERE clause];
SELECT select_expr FROM { tb_name | stb_name } WHERE ts_col cond_operatior NOW();
INSERT INTO tb_name VALUES (NOW(), ...);
492 493
```

494
**功能说明**:返回客户端当前系统时间。
495

496
**返回结果数据类型**:TIMESTAMP。
497

498
**应用字段**:在 WHERE 或 INSERT 语句中使用时只能作用于 TIMESTAMP 类型的字段。
499

500 501 502
**适用于**:表和超级表。

**嵌套子查询支持**:适用于内层查询和外层查询。
503

504
**使用说明**
505

506 507 508
- 支持时间加减操作,如 NOW() + 1s, 支持的时间单位如下:
        b(纳秒)、u(微秒)、a(毫秒)、s(秒)、m(分)、h(小时)、d(天)、w(周)。
- 返回的时间戳精度与当前 DATABASE 设置的时间精度一致。
509 510


511
#### TIMEDIFF
512

513
```sql
514
SELECT TIMEDIFF(ts | datetime_string1, ts | datetime_string2 [, time_unit]) FROM { tb_name | stb_name } [WHERE clause];
515 516
```

517
**功能说明**:计算两个时间戳之间的差值,并近似到时间单位 time_unit 指定的精度。
518

519
**返回结果数据类型**:BIGINT。输入包含不符合时间日期格式字符串则返回 NULL。
520

521
**应用字段**:表示 UNIX 时间戳的 BIGINT, TIMESTAMP 类型,或符合日期时间格式的 VARCHAR, NCHAR 类型。
522

523
**适用于**:表和超级表。
524

525 526
**嵌套子查询支持**:适用于内层查询和外层查询。

527 528
**使用说明**
- 支持的时间单位 time_unit 如下:
529
          1b(纳秒), 1u(微秒),1a(毫秒),1s(秒),1m(分),1h(小时),1d(天), 1w(周)。
530
- 如果时间单位 time_unit 未指定, 返回的时间差值精度与当前 DATABASE 设置的时间精度一致。
531 532


533
#### TIMETRUNCATE
534

535
```sql
536
SELECT TIMETRUNCATE(ts | datetime_string , time_unit) FROM { tb_name | stb_name } [WHERE clause];
537
```
538

539
**功能说明**:将时间戳按照指定时间单位 time_unit 进行截断。
540

541
**返回结果数据类型**:TIMESTAMP。
542

543
**应用字段**:表示 UNIX 时间戳的 BIGINT, TIMESTAMP 类型,或符合日期时间格式的 VARCHAR, NCHAR 类型。
544

545
**适用于**:表和超级表。
546

547 548
**使用说明**
- 支持的时间单位 time_unit 如下:
549
          1b(纳秒), 1u(微秒),1a(毫秒),1s(秒),1m(分),1h(小时),1d(天), 1w(周)。
550
- 返回的时间戳精度与当前 DATABASE 设置的时间精度一致。
551 552


553
#### TIMEZONE
554

555 556 557
```sql
SELECT TIMEZONE() FROM { tb_name | stb_name } [WHERE clause];
```
558

559
**功能说明**:返回客户端当前时区信息。
560

561
**返回结果数据类型**:VARCHAR。
562

563
**应用字段**:无
564

565
**适用于**:表和超级表。
566 567


568
#### TODAY
569

570 571 572 573
```sql
SELECT TODAY() FROM { tb_name | stb_name } [WHERE clause];
SELECT select_expr FROM { tb_name | stb_name } WHERE ts_col cond_operatior TODAY()];
INSERT INTO tb_name VALUES (TODAY(), ...);
574 575
```

576
**功能说明**:返回客户端当日零时的系统时间。
577

578
**返回结果数据类型**:TIMESTAMP。
579

580
**应用字段**:在 WHERE 或 INSERT 语句中使用时只能作用于 TIMESTAMP 类型的字段。
581

582
**适用于**:表和超级表。
583

584
**使用说明**
585

586 587 588
- 支持时间加减操作,如 TODAY() + 1s, 支持的时间单位如下:
                b(纳秒),u(微秒),a(毫秒),s(秒),m(分),h(小时),d(天),w(周)。
- 返回的时间戳精度与当前 DATABASE 设置的时间精度一致。
589 590


591
## 聚合函数
592

593
聚合函数为查询结果集的每一个分组返回单个结果行。可以由 GROUP BY 或窗口切分子句指定分组,如果没有,则整个查询结果集视为一个分组。
594

595
TDengine 支持针对数据的聚合查询。提供如下聚合函数。
596

597
### AVG
598

G
gccgdb1234 已提交
599
```sql
600
SELECT AVG(field_name) FROM tb_name [WHERE clause];
601 602
```

603
**功能说明**:统计指定字段的平均值。
604

605
**返回数据类型**:DOUBLE。
606

607
**适用数据类型**:数值类型。
608

609
**适用于**:表和超级表。
610 611


612
### COUNT
613

G
gccgdb1234 已提交
614
```sql
615
SELECT COUNT([*|field_name]) FROM tb_name [WHERE clause];
616 617
```

618
**功能说明**:统计指定字段的记录行数。
619

620
**返回数据类型**:BIGINT。
621

622
**适用数据类型**:全部类型字段。
623

624
**适用于**:表和超级表。
625

626
**使用说明**:
627

628
- 可以使用星号(\*)来替代具体的字段,使用星号(\*)返回全部记录数量。
629
- 如果统计字段是具体的列,则返回该列中非 NULL 值的记录数量。
630 631


632
### ELAPSED
633

G
gccgdb1234 已提交
634
```sql
635
SELECT ELAPSED(ts_primary_key [, time_unit]) FROM { tb_name | stb_name } [WHERE clause] [INTERVAL(interval [, offset]) [SLIDING sliding]];
636 637
```

638
**功能说明**:elapsed函数表达了统计周期内连续的时间长度,和twa函数配合使用可以计算统计曲线下的面积。在通过INTERVAL子句指定窗口的情况下,统计在给定时间范围内的每个窗口内有数据覆盖的时间范围;如果没有INTERVAL子句,则返回整个给定时间范围内的有数据覆盖的时间范围。注意,ELAPSED返回的并不是时间范围的绝对值,而是绝对值除以time_unit所得到的单位个数。
639

640
**返回结果类型**:DOUBLE。
641

642
**适用数据类型**:TIMESTAMP。
643

644
**支持的版本**:2.6.0.0 及以后的版本。
645

646
**适用于**: 表,超级表,嵌套查询的外层查询
647

648
**说明**
649 650 651
- field_name参数只能是表的第一列,即 TIMESTAMP 类型的主键列。
- 按time_unit参数指定的时间单位返回,最小是数据库的时间分辨率。time_unit 参数未指定时,以数据库的时间分辨率为时间单位。支持的时间单位 time_unit 如下:
          1b(纳秒), 1u(微秒),1a(毫秒),1s(秒),1m(分),1h(小时),1d(天), 1w(周)。
652 653 654 655 656 657
- 可以和interval组合使用,返回每个时间窗口的时间戳差值。需要特别注意的是,除第一个时间窗口和最后一个时间窗口外,中间窗口的时间戳差值均为窗口长度。
- order by asc/desc不影响差值的计算结果。
- 对于超级表,需要和group by tbname子句组合使用,不可以直接使用。
- 对于普通表,不支持和group by子句组合使用。
- 对于嵌套查询,仅当内层查询会输出隐式时间戳列时有效。例如select elapsed(ts) from (select diff(value) from sub1)语句,diff函数会让内层查询输出隐式时间戳列,此为主键列,可以用于elapsed函数的第一个参数。相反,例如select elapsed(ts) from (select * from sub1) 语句,ts列输出到外层时已经没有了主键列的含义,无法使用elapsed函数。此外,elapsed函数作为一个与时间线强依赖的函数,形如select elapsed(ts) from (select diff(value) from st group by tbname)尽管会返回一条计算结果,但并无实际意义,这种用法后续也将被限制。
- 不支持与leastsquares、diff、derivative、top、bottom、last_row、interp等函数混合使用。
658

659
### LEASTSQUARES
660

G
gccgdb1234 已提交
661
```sql
662
SELECT LEASTSQUARES(field_name, start_val, step_val) FROM tb_name [WHERE clause];
663 664
```

665
**功能说明**:统计表中某列的值是主键(时间戳)的拟合直线方程。start_val 是自变量初始值,step_val 是自变量的步长值。
666

667
**返回数据类型**:字符串表达式(斜率, 截距)。
668

669
**适用数据类型**:field_name 必须是数值类型。
670

671
**适用于**:表。
672 673


674
### MODE
675

G
gccgdb1234 已提交
676
```sql
677
SELECT MODE(field_name) FROM tb_name [WHERE clause];
678 679
```

680
**功能说明**:返回出现频率最高的值,若存在多个频率相同的最高值,输出NULL。
681

682
**返回数据类型**:与输入数据类型一致。
683

684
**适用数据类型**:全部类型字段。
685

686
**适用于**:表和超级表。
687 688


689
### SPREAD
690

G
gccgdb1234 已提交
691
```sql
692
SELECT SPREAD(field_name) FROM { tb_name | stb_name } [WHERE clause];
693 694
```

695
**功能说明**:统计表中某列的最大值和最小值之差。
696

697
**返回数据类型**:DOUBLE。
698

699
**适用数据类型**:INTEGER, TIMESTAMP。
700

701
**适用于**:表和超级表。
702 703


704
### STDDEV
705

G
gccgdb1234 已提交
706
```sql
707
SELECT STDDEV(field_name) FROM tb_name [WHERE clause];
708 709
```

710
**功能说明**:统计表中某列的均方差。
711

712
**返回数据类型**:DOUBLE。
713

714
**适用数据类型**:数值类型。
715

716
**适用于**:表和超级表。
717 718


719
### SUM
720

G
gccgdb1234 已提交
721
```sql
722
SELECT SUM(field_name) FROM tb_name [WHERE clause];
723 724
```

725
**功能说明**:统计表/超级表中某列的和。
726

727
**返回数据类型**:DOUBLE, BIGINT。
728

729
**适用数据类型**:数值类型。
730

731
**适用于**:表和超级表。
732 733


734
### HYPERLOGLOG
735

G
gccgdb1234 已提交
736
```sql
737
SELECT HYPERLOGLOG(field_name) FROM { tb_name | stb_name } [WHERE clause];
738 739
```

740
**功能说明**
741
  - 采用 hyperloglog 算法,返回某列的基数。该算法在数据量很大的情况下,可以明显降低内存的占用,求出来的基数是个估算值,标准误差(标准误差是多次实验,每次的平均数的标准差,不是与真实结果的误差)为 0.81%。
742
  - 在数据量较少的时候该算法不是很准确,可以使用 select count(data) from (select unique(col) as data from table) 的方法。
743

744
**返回结果类型**:INTEGER。
745

746
**适用数据类型**:任何类型。
747

748
**适用于**:表和超级表。
749 750


751
### HISTOGRAM
752

G
gccgdb1234 已提交
753
```sql
754
SELECT HISTOGRAM(field_namebin_type, bin_description, normalized) FROM tb_name [WHERE clause];
755 756
```

757
**功能说明**:统计数据按照用户指定区间的分布。
758

759
**返回结果类型**:如归一化参数 normalized 设置为 1,返回结果为 DOUBLE 类型,否则为 BIGINT 类型。
760

761
**适用数据类型**:数值型字段。
762

763
**适用于**: 表和超级表。
764

765 766 767 768 769 770 771 772 773 774 775 776 777 778
**详细说明**
1. bin_type 用户指定的分桶类型, 有效输入类型为"user_input“, ”linear_bin", "log_bin"。
2. bin_description 描述如何生成分桶区间,针对三种桶类型,分别为以下描述格式(均为 JSON 格式字符串):       
    - "user_input": "[1, 3, 5, 7]" 
       用户指定 bin 的具体数值。
       
    - "linear_bin": "{"start": 0.0, "width": 5.0, "count": 5, "infinity": true}"
       "start" 表示数据起始点,"width" 表示每次 bin 偏移量, "count" 为 bin 的总数,"infinity" 表示是否添加(-inf, inf)作为区间起点跟终点,
       生成区间为[-inf, 0.0, 5.0, 10.0, 15.0, 20.0, +inf]。
 
    - "log_bin": "{"start":1.0, "factor": 2.0, "count": 5, "infinity": true}"
       "start" 表示数据起始点,"factor" 表示按指数递增的因子,"count" 为 bin 的总数,"infinity" 表示是否添加(-inf, inf)作为区间起点跟终点,
       生成区间为[-inf, 1.0, 2.0, 4.0, 8.0, 16.0, +inf]。
3. normalized 是否将返回结果归一化到 0~1 之间 。有效输入为 0 和 1。
779 780


781
## 选择函数
782

783
选择函数根据语义在查询结果集中选择一行或多行结果返回。用户可以同时指定输出 ts 列或其他列(包括 tbname 和标签列),这样就可以方便地知道被选出的值是源于哪个数据行的。
784

785
### APERCENTILE
786

G
gccgdb1234 已提交
787
```sql
788 789
SELECT APERCENTILE(field_name, P[, algo_type])
FROM { tb_name | stb_name } [WHERE clause]
790 791
```

792
**功能说明**:统计表/超级表中指定列的值的近似百分比分位数,与 PERCENTILE 函数相似,但是返回近似结果。
793

794
**返回数据类型**: DOUBLE。
795

796
**适用数据类型**:数值类型。
797

798 799 800 801 802
**适用于**:表和超级表。

**说明**
- P值范围是[0,100],当为0时等同于MIN,为100时等同于MAX。
- algo_type 取值为 "default" 或 "t-digest"。 输入为 "default" 时函数使用基于直方图算法进行计算。输入为 "t-digest" 时使用t-digest算法计算分位数的近似结果。如果不指定 algo_type 则使用 "default" 算法。
803

804
### BOTTOM
805

G
gccgdb1234 已提交
806
```sql
807 808
SELECT BOTTOM(field_name, K) FROM { tb_name | stb_name } [WHERE clause];
```
809

810
**功能说明**:统计表/超级表中某列的值最小 _k_ 个非 NULL 值。如果多条数据取值一样,全部取用又会超出 k 条限制时,系统会从相同值中随机选取符合要求的数量返回。
811

812
**返回数据类型**:同应用的字段。
813

814
**适用数据类型**:数值类型。
815

816
**适用于**:表和超级表。
817

818
**使用说明**:
819

820 821 822
- *k*值取值范围 1≤*k*≤100;
- 系统同时返回该记录关联的时间戳列;
- 限制:BOTTOM 函数不支持 FILL 子句。
823

824 825
### FIRST

G
gccgdb1234 已提交
826
```sql
827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842
SELECT FIRST(field_name) FROM { tb_name | stb_name } [WHERE clause];
```

**功能说明**:统计表/超级表中某列的值最先写入的非 NULL 值。

**返回数据类型**:同应用的字段。

**适用数据类型**:所有字段。

**适用于**:表和超级表。

**使用说明**:

- 如果要返回各个列的首个(时间戳最小)非 NULL 值,可以使用 FIRST(\*);
- 如果结果集中的某列全部为 NULL 值,则该列的返回结果也是 NULL;
- 如果结果集中所有列全部为 NULL 值,则不返回结果。
843

844
### INTERP
845

G
gccgdb1234 已提交
846
```sql
847
SELECT INTERP(field_name) FROM { tb_name | stb_name } [WHERE where_condition] [ RANGE(timestamp1,timestamp2) ] [EVERY(interval)] [FILL ({ VALUE | PREV | NULL | LINEAR | NEXT})];
848 849
```

850
**功能说明**:返回指定时间截面指定列的记录值或插值。
851

852
**返回数据类型**:同字段类型。
853

854
**适用数据类型**:数值类型。
855

856
**适用于**:表、超级表。
857

858
**使用说明**
859

860 861 862 863 864 865 866 867 868
- INTERP 用于在指定时间断面获取指定列的记录值,如果该时间断面不存在符合条件的行数据,那么会根据 FILL 参数的设定进行插值。
- INTERP 的输入数据为指定列的数据,可以通过条件语句(where 子句)来对原始列数据进行过滤,如果没有指定过滤条件则输入为全部数据。
- INTERP 的输出时间范围根据 RANGE(timestamp1,timestamp2)字段来指定,需满足 timestamp1<=timestamp2。其中 timestamp1(必选值)为输出时间范围的起始值,即如果 timestamp1 时刻符合插值条件则 timestamp1 为输出的第一条记录,timestamp2(必选值)为输出时间范围的结束值,即输出的最后一条记录的 timestamp 不能大于 timestamp2。如果没有指定 RANGE,那么满足过滤条件的输入数据中第一条记录的 timestamp 即为 timestamp1,最后一条记录的 timestamp 即为 timestamp2,同样也满足 timestamp1 <= timestamp2。
- INTERP 根据 EVERY 字段来确定输出时间范围内的结果条数,即从 timestamp1 开始每隔固定长度的时间(EVERY 值)进行插值。如果没有指定 EVERY,则默认窗口大小为无穷大,即从 timestamp1 开始只有一个窗口。
- INTERP 根据 FILL 字段来决定在每个符合输出条件的时刻如何进行插值,如果没有 FILL 字段则默认不插值,即输出为原始记录值或不输出(原始记录不存在)。
- INTERP 只能在一个时间序列内进行插值,因此当作用于超级表时必须跟 group by tbname 一起使用,当作用嵌套查询外层时内层子查询不能含 GROUP BY 信息。
- INTERP 的插值结果不受 ORDER BY timestamp 的影响,ORDER BY timestamp 只影响输出结果的排序。

### LAST
869

G
gccgdb1234 已提交
870
```sql
871
SELECT LAST(field_name) FROM { tb_name | stb_name } [WHERE clause];
872 873
```

874
**功能说明**:统计表/超级表中某列的值最后写入的非 NULL 值。
875

876
**返回数据类型**:同应用的字段。
877

878
**适用数据类型**:所有字段。
879

880 881 882 883 884 885 886
**适用于**:表和超级表。

**使用说明**:

- 如果要返回各个列的最后(时间戳最大)一个非 NULL 值,可以使用 LAST(\*);
- 如果结果集中的某列全部为 NULL 值,则该列的返回结果也是 NULL;如果结果集中所有列全部为 NULL 值,则不返回结果。
- 在用于超级表时,时间戳完全一样且同为最大的数据行可能有多个,那么会从中随机返回一条,而并不保证多次运行所挑选的数据行必然一致。
887 888


889
### LAST_ROW
890

G
gccgdb1234 已提交
891
```sql
892
SELECT LAST_ROW(field_name) FROM { tb_name | stb_name };
893 894
```

895
**功能说明**:返回表/超级表的最后一条记录。
896

897
**返回数据类型**:同应用的字段。
898

899
**适用数据类型**:所有字段。
900

901 902 903
**适用于**:表和超级表。

**使用说明**
904

905 906
- 在用于超级表时,时间戳完全一样且同为最大的数据行可能有多个,那么会从中随机返回一条,而并不保证多次运行所挑选的数据行必然一致。
- 不能与 INTERVAL 一起使用。
907

908
### MAX
909

G
gccgdb1234 已提交
910
```sql
911
SELECT MAX(field_name) FROM { tb_name | stb_name } [WHERE clause];
912 913
```

914
**功能说明**:统计表/超级表中某列的值最大值。
915

916
**返回数据类型**:同应用的字段。
917

918
**适用数据类型**:数值类型。
919

920
**适用于**:表和超级表。
921 922


923
### MIN
924

G
gccgdb1234 已提交
925
```sql
926
SELECT MIN(field_name) FROM {tb_name | stb_name} [WHERE clause];
927 928
```

929
**功能说明**:统计表/超级表中某列的值最小值。
930

931
**返回数据类型**:同应用的字段。
932

933
**适用数据类型**:数值类型。
934

935
**适用于**:表和超级表。
936 937


938
### PERCENTILE
939

G
gccgdb1234 已提交
940
```sql
941
SELECT PERCENTILE(field_name, P) FROM { tb_name } [WHERE clause];
942 943
```

944
**功能说明**:统计表中某列的值百分比分位数。
945

946
**返回数据类型**: DOUBLE。
947

948
**应用字段**:数值类型。
949

950
**适用于**:表。
951

952
**使用说明***P*值取值范围 0≤*P*≤100,为 0 的时候等同于 MIN,为 100 的时候等同于 MAX。
953 954


955
### TAIL
956

G
gccgdb1234 已提交
957
```sql
958
SELECT TAIL(field_name, k, offset_val) FROM {tb_name | stb_name} [WHERE clause];
959 960
```

961
**功能说明**:返回跳过最后 offset_val 个,然后取连续 k 个记录,不忽略 NULL 值。offset_val 可以不输入。此时返回最后的 k 个记录。当有 offset_val 输入的情况下,该函数功能等效于 `order by ts desc LIMIT k OFFSET offset_val`
962

963
**参数范围**:k: [1,100] offset_val: [0,100]。
964

965
**返回数据类型**:同应用的字段。
966

967
**适用数据类型**:适合于除时间主键列外的任何类型。
968

969
**适用于**:表、超级表。
970

971 972

### TOP
973

G
gccgdb1234 已提交
974
```sql
975
SELECT TOP(field_name, K) FROM { tb_name | stb_name } [WHERE clause];
976 977
```

978
**功能说明**: 统计表/超级表中某列的值最大 _k_ 个非 NULL 值。如果多条数据取值一样,全部取用又会超出 k 条限制时,系统会从相同值中随机选取符合要求的数量返回。
979

980
**返回数据类型**:同应用的字段。
981

982
**适用数据类型**:数值类型。
983

984
**适用于**:表和超级表。
985

986
**使用说明**:
987

988 989 990
- *k*值取值范围 1≤*k*≤100;
- 系统同时返回该记录关联的时间戳列;
- 限制:TOP 函数不支持 FILL 子句。
991

992
### UNIQUE
993

G
gccgdb1234 已提交
994
```sql
995 996
SELECT UNIQUE(field_name) FROM {tb_name | stb_name} [WHERE clause];
```
997

998
**功能说明**:返回该列的数值首次出现的值。该函数功能与 distinct 相似,但是可以匹配标签和时间戳信息。可以针对除时间列以外的字段进行查询,可以匹配标签和时间戳,其中的标签和时间戳是第一次出现时刻的标签和时间戳。
999

1000
**返回数据类型**:同应用的字段。
1001

1002
**适用数据类型**:适合于除时间类型以外的字段。
1003

1004
**适用于**: 表和超级表。
1005 1006


1007
## 时序数据特有函数
1008

1009
时序数据特有函数是 TDengine 为了满足时序数据的查询场景而量身定做出来的。在通用数据库中,实现类似功能通常需要复杂的查询语法,且效率很低。TDengine 以函数的方式内置了这些功能,最大程度的减轻了用户的使用成本。
1010

1011
### CSUM
1012

1013
```sql
G
gccgdb1234 已提交
1014
SELECT CSUM(field_name) FROM { tb_name | stb_name } [WHERE clause]
1015
```
1016

1017
**功能说明**:累加和(Cumulative sum),输出行与输入行数相同。
1018

1019
**返回结果类型**: 输入列如果是整数类型返回值为长整型 (int64_t),浮点数返回值为双精度浮点数(Double)。无符号整数类型返回值为无符号长整型(uint64_t)。 返回结果中同时带有每行记录对应的时间戳。
1020

G
gccgdb1234 已提交
1021
**适用数据类型**:数值类型。
1022

1023
**嵌套子查询支持**: 适用于内层查询和外层查询。
1024

1025
**适用于**:表和超级表。
1026

1027 1028 1029 1030
**使用说明**
  
  - 不支持 +、-、*、/ 运算,如 csum(col1) + csum(col2)。
  - 只能与聚合(Aggregation)函数一起使用。 该函数可以应用在普通表和超级表上。 
1031
  - 使用在超级表上的时候,需要搭配 PARTITION BY tbname使用,将结果强制规约到单个时间线。
1032 1033


1034
### DERIVATIVE
1035

G
gccgdb1234 已提交
1036
```sql
1037
SELECT DERIVATIVE(field_name, time_interval, ignore_negative) FROM tb_name [WHERE clause];
1038 1039
```

1040
**功能说明**:统计表中某列数值的单位变化率。其中单位时间区间的长度可以通过 time_interval 参数指定,最小可以是 1 秒(1s);ignore_negative 参数的值可以是 0 或 1,为 1 时表示忽略负值。
1041

1042
**返回数据类型**:DOUBLE。
1043

1044
**适用数据类型**:数值类型。
1045

1046
**适用于**:表和超级表。
1047

1048
**使用说明**: DERIVATIVE 函数可以在由 PARTITION BY 划分出单独时间线的情况下用于超级表(也即 PARTITION BY tbname)。
1049 1050


1051
### DIFF
1052

G
gccgdb1234 已提交
1053 1054 1055
```sql
SELECT {DIFF(field_name, ignore_negative) | DIFF(field_name)} FROM tb_name [WHERE clause];
```
1056

1057
**功能说明**:统计表中某列的值与前一行对应值的差。 ignore_negative 取值为 0|1 , 可以不填,默认值为 0. 不忽略负值。ignore_negative 为 1 时表示忽略负数。
1058

1059
**返回数据类型**:同应用字段。
1060

1061
**适用数据类型**:数值类型。
1062

1063
**适用于**:表和超级表。
1064

1065
**使用说明**: 输出结果行数是范围内总行数减一,第一行没有结果输出。
1066 1067


1068
### IRATE
1069

G
gccgdb1234 已提交
1070
```sql
1071
SELECT IRATE(field_name) FROM tb_name WHERE clause;
1072 1073
```

1074
**功能说明**:计算瞬时增长率。使用时间区间中最后两个样本数据来计算瞬时增长速率;如果这两个值呈递减关系,那么只取最后一个数用于计算,而不是使用二者差值。
1075

1076
**返回数据类型**:DOUBLE。
1077

1078
**适用数据类型**:数值类型。
1079

1080 1081
**适用于**:表和超级表。

1082

1083
### MAVG
1084

1085
```sql
G
gccgdb1234 已提交
1086
SELECT MAVG(field_name, K) FROM { tb_name | stb_name } [WHERE clause]
1087
```
1088

1089
  **功能说明**: 计算连续 k 个值的移动平均数(moving average)。如果输入行数小于 k,则无结果输出。参数 k 的合法输入范围是 1≤ k ≤ 1000。
1090

1091
  **返回结果类型**: DOUBLE。
1092

G
gccgdb1234 已提交
1093
  **适用数据类型**: 数值类型。
1094

1095
  **嵌套子查询支持**: 适用于内层查询和外层查询。
1096

1097
  **适用于**:表和超级表。
1098

1099 1100 1101 1102
  **使用说明**
  
  - 不支持 +、-、*、/ 运算,如 mavg(col1, k1) + mavg(col2, k1); 
  - 只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用;
1103
  - 使用在超级表上的时候,需要搭配 PARTITION BY tbname使用,将结果强制规约到单个时间线。
1104

1105
### SAMPLE
1106 1107

```sql
G
gccgdb1234 已提交
1108
SELECT SAMPLE(field_name, K) FROM { tb_name | stb_name } [WHERE clause]
1109 1110
```

1111
  **功能说明**: 获取数据的 k 个采样值。参数 k 的合法输入范围是 1≤ k ≤ 1000。
1112

1113
  **返回结果类型**: 同原始数据类型, 返回结果中带有该行记录的时间戳。
1114

1115
  **适用数据类型**: 在超级表查询中使用时,不能应用在标签之上。
1116

1117
  **嵌套子查询支持**: 适用于内层查询和外层查询。
1118

1119
  **适用于**:表和超级表。
1120

1121 1122 1123
  **使用说明**
  
  - 不能参与表达式计算;该函数可以应用在普通表和超级表上;
1124
  - 使用在超级表上的时候,需要搭配 PARTITION by tbname 使用,将结果强制规约到单个时间线。
1125

1126
### STATECOUNT
1127

G
gccgdb1234 已提交
1128
```sql
1129
SELECT STATECOUNT(field_name, oper, val) FROM { tb_name | stb_name } [WHERE clause];
1130 1131
```

1132
**功能说明**:返回满足某个条件的连续记录的个数,结果作为新的一列追加在每行后面。条件根据参数计算,如果条件为 true 则加 1,条件为 false 则重置为-1,如果数据为 NULL,跳过该条数据。
1133

1134
**参数范围**
1135

1136
- oper : "LT" (小于)、"GT"(大于)、"LE"(小于等于)、"GE"(大于等于)、"NE"(不等于)、"EQ"(等于),不区分大小写。
1137
- val : 数值型
1138

1139
**返回结果类型**:INTEGER。
1140

G
gccgdb1234 已提交
1141
**适用数据类型**:数值类型。
1142

1143
**嵌套子查询支持**:不支持应用在子查询上。
1144

1145
**适用于**:表和超级表。
1146

1147
**使用说明**
1148

1149
- 该函数可以应用在普通表上,在由 PARTITION BY 划分出单独时间线的情况下用于超级表(也即 PARTITION BY tbname)
1150
- 不能和窗口操作一起使用,例如 interval/state_window/session_window。
1151

1152 1153

### STATEDURATION
1154 1155

```sql
1156
SELECT stateDuration(field_name, oper, val, unit) FROM { tb_name | stb_name } [WHERE clause];
1157 1158
```

1159
**功能说明**:返回满足某个条件的连续记录的时间长度,结果作为新的一列追加在每行后面。条件根据参数计算,如果条件为 true 则加上两个记录之间的时间长度(第一个满足条件的记录时间长度记为 0),条件为 false 则重置为-1,如果数据为 NULL,跳过该条数据。
1160

1161
**参数范围**
1162

1163
- oper : "LT" (小于)、"GT"(大于)、"LE"(小于等于)、"GE"(大于等于)、"NE"(不等于)、"EQ"(等于),不区分大小写。
1164 1165
- val : 数值型
- unit : 时间长度的单位,范围[1s、1m、1h ],不足一个单位舍去。默认为 1s。
1166

1167
**返回结果类型**:INTEGER。
1168

G
gccgdb1234 已提交
1169
**适用数据类型**:数值类型。
1170

1171
**嵌套子查询支持**:不支持应用在子查询上。
1172

1173
**适用于**:表和超级表。
1174

1175
**使用说明**
1176

1177
- 该函数可以应用在普通表上,在由 PARTITION BY 划分出单独时间线的情况下用于超级表(也即 PARTITION BY tbname)
1178
- 不能和窗口操作一起使用,例如 interval/state_window/session_window。
1179 1180


1181 1182
### TWA

G
gccgdb1234 已提交
1183
```sql
1184
SELECT TWA(field_name) FROM tb_name WHERE clause;
1185 1186
```

1187
**功能说明**:时间加权平均函数。统计表中某列在一段时间内的时间加权平均。
1188

1189
**返回数据类型**:DOUBLE。
1190

1191
**适用数据类型**:数值类型。
1192

1193
**适用于**:表和超级表。
1194

1195
**使用说明**: TWA 函数可以在由 PARTITION BY 划分出单独时间线的情况下用于超级表(也即 PARTITION BY tbname)。
1196 1197


1198
## 系统信息函数
1199

1200
### DATABASE
1201

G
gccgdb1234 已提交
1202
```sql
1203
SELECT DATABASE();
1204 1205
```

1206
**说明**:返回当前登录的数据库。如果登录的时候没有指定默认数据库,且没有使用USE命令切换数据库,则返回NULL。
1207 1208


1209
### CLIENT_VERSION
1210

G
gccgdb1234 已提交
1211
```sql
1212 1213
SELECT CLIENT_VERSION();
```
1214

1215
**说明**:返回客户端版本。
1216

1217
### SERVER_VERSION
1218

G
gccgdb1234 已提交
1219
```sql
1220 1221
SELECT SERVER_VERSION();
```
1222

1223
**说明**:返回服务端版本。
Y
Yu Chen 已提交
1224

1225
### SERVER_STATUS
1226

G
gccgdb1234 已提交
1227
```sql
1228 1229 1230 1231
SELECT SERVER_VERSION();
```

**说明**:返回服务端当前的状态。