SAP HANA Appliance Software SPS 04
目标读者
顾问
理员
SAP硬件合作伙伴
目录
符号表示 12
引言 13
SQL 13
支持语言代码页 13
注释 13
标识符 13
单引号 14
双引号 14
SQL 保留字 14
数类型 16
数类型分类 16
日期时间类型 16
Date 格式 16
Time 格式 17
Timestamp 格式 18
日期时间类型支持函数: 19
数字类型 20
字符类型 21
二进制类型 22
象(LOB)类型 22
SQL 数类型列存储数类型间映射 23
数类型转换 24
类型常量 27
谓词 29 SAP HANA 数库– SQL 参考手册
2
较谓词 29
范围谓词 29
In 谓词 29
Exists 谓词 29
NULL 谓词 30
CONTAINS 谓词 30
操作符 33
元二元操作符 33
操作符优先级 33
算术操作符 34
字符串操作符 34
较操作符 35
逻辑操作符 35
集合操作符 35
表达式 36
Case 表达式 36
Function 表达式 36
Aggregate 表达式 37
表达式中子查询 37
SQL 函数 39
介绍 39
数类型转换函数 39
CAST 39
TO_ALPHANUM 39
TO_BIGINT 40 SAP HANA 数库– SQL 参考手册
3
TO_BINARY 40
TO_BLOB 40
TO_CHAR 41
TO_CLOB 41
TO_DATE 41
TO_DATS 42
TO_DECIMAL 42
TO_DOUBLE 43
TO_INT 43
TO_INTEGER 43
TO_NCHAR 44
TO_NCLOB 44
TO_NVARCHAR 44
TO_REAL 45
TO_SECONDDATE 45
TO_SMALLDECIMAL 45
TO_SMALLINT 46
TO_TIME 46
TO_TIMESTAMP 46
TO_TINYINT 47
TO_VARCHAR 47
日期时间函数 47
ADD_DAYS 47
ADD_MONTHS 48
ADD_SECONDS 48 SAP HANA 数库– SQL 参考手册
4
ADD_YEARS 48
CURRENT_DATE 49
CURRENT_TIME 49
CURRENT_TIMESTAMP 49
CURRECT_UTCDATE 50
CURRENT_UTCTIME 50
CURRENT_UTCTIMESTAMP 50
DAYNAME 51
DAYOFMONTH 51
DAYOFYEAR 51
DAYS_BETWEEN 52
EXTRACT 52
HOUR 52
ISOWEEK 53
LAST_DAY 53
LOCALTOUTC 53
MINUTE 54
MONTH 54
MONTHNAME 54
NEXT_DAY 55
NOW 55
QUARTER 55
SECOND 56
SECONDS_BETWEEN 56
UTCTOLOCAL 56 SAP HANA 数库– SQL 参考手册
5
WEEK 57
WEEKDAY 57
YEAR 57
数字函数 58
ABS 58
ACOS 58
ASIN 59
ATAN 59
ATAN2 59
BINTOHEX 60
BITAND 60
CEIL 60
COS 61
COSH 61
COT 61
EXP 62
FLOOR 62
GREATEST 62
HEXTOBIN 63
LEAST 63
LN 63
LOG 64
MOD 64
POWER 65
ROUND 65 SAP HANA 数库– SQL 参考手册
6
SIGN 65
SIN 66
SINH 66
SQRT 66
TAN 67
TANH 67
UMINUS 67
字符串函数 68
ASCII 68
CHAR 68
CONCAT 68
LCASE 69
LEFT 69
LENGTH 69
LOCATE 70
LOWER 70
LPAD 71
LTRIM 71
NCHAR 71
REPLACE 72
RIGHT 72
RPAD 72
RTRIM 73
SUBSTR_AFTER 73
SUBSTR_BEFORE 74 SAP HANA 数库– SQL 参考手册
7
SUBSTRING 74
TRIM 74
UCASE 75
UNICODE 75
UPPER 76
杂项函数 76
COALESCE 76
CURRENT_CONNECTION 77
CURRENCT_SCHEMA 77
CURRENT_USER 77
GROUPING_ID 78
IFNULL 80
MAP 80
NULLIF 81
SESSION_CONTEXT 82
SESSION_USER 82
SYSUUID 83
SQL 语句 85
集合定义操语句 85
ALTER AUDIT POLICY 85
ALTER FULLTEXT INDEX 87
ALTER INDEX 89
ALTER SEQUENCE 89
ALTER TABLE 91
CREATE AUDIT POLICY 99 SAP HANA 数库– SQL 参考手册
8
CREATE FULLTEXT INDEX 101
CREATE INDEX 103
CREATE SCHEMA 104
CREATE SEQUENCE 105
CREATE SYNONYM 107
CREATE TABLE 107
CREATE TRIGGER 115
CREATE VIEW 124
DROP AUDIT POLICY 125
DROP FULLTEXT INDEX 126
DROP INDEX 127
DROP SCHEMA 127
DROP SEQUENCE 128
DROP SYNONYM 128
DROP TABLE 129
DROP TRIGGER 130
DROP VIEW 131
RENAME COLUMN 132
RENAME INDEX 132
RENAME TABLE 133
ALTER TABLE ALTER TYPE 134
TRUNCATE TABLE 135
数操语句: 136
DELETE: 136
EXPLAIN PLAN 137 SAP HANA 数库– SQL 参考手册
9
INSERT 141
LOAD 143
MERGE DELTA 143
REPLACE | UPSERT 144
SELECT 146
UNLOAD 158
UPDATE 158
系统理语句 159
SET SYSTEM LICENSE 159
ALTER SYSTEM ALTER CONFIGURATION 160
ALTER SYSTEM ALTER SESSION SET 162
ALTER SYSTEM ALTER SESSION UNSET 162
ALTER SYSTEM CANCEL [WORK IN] SESSION 163
ALTER SYSTEM CLEAR SQL PLAN CACHE 164
ALTER SYSTEM CLEAR TRACES 164
ALTER SYSTEM DISCONNECT SESSION 165
ALTER SYSTEM LOGGING 166
ALTER SYSTEM RECLAIM DATAVOLUME 166
ALTER SYSTEM RECLAIM LOG 167
ALTER SYSTEM RECLAIM VERSION SPACE 167
ALTER SYSTEM RECONFIGURE SERVICE 168
ALTER SYSTEM REMOVE TRACES 168
ALTER SYSTEM RESET MONITORING VIEW 169
ALTER SYSTEM SAVE PERFTRACE 170
ALTER SYSTEM SAVEPOINT 171 SAP HANA 数库– SQL 参考手册
10
ALTER SYSTEM START PERFTRACE 171
ALTER SYSTEM STOP PERFTRACE 172
ALTER SYSTEM STOP SERVICE 172
UNSET SYSTEM LICENSE ALL 173
会话理语句 173
CONNECT 173
SET HISTORY SESSION 173
SET SCHEMA 174
SET [SESSION] 174
UNSET [SESSION] 175
事务理语句 176
COMMIT 176
LOCK TABLE 176
ROLLBACK 176
SET TRANSACTION 177
访问控制语句 178
ALTER SAML PROVIDER 178
ALTER USER 179
CREATE ROLE 182
CREATE SAML PROVIDER 183
CREATE USER 184
DROP ROLE 186
DROP SAML PROVIDER 187
DROP USER 187
GRANT 188 SAP HANA 数库– SQL 参考手册
11
REVOKE 197
数导入导出语句 198
EXPORT 198
IMPORT 200
IMPORT FROM 202
SQL 语句限制 204
SQL 错误代码 207
SAP HANA 数库– SQL 参考手册
12
符号表示
参考手册 BNF(巴科斯范式)定义编程语言描述 SQL 符号技术BNF 描述
组利系列符号产生式规语法
< > 尖括号包含SQL语言句法元素(BNF非终结符)名字
定义符号提供出现产生式左侧元素定义
[ ] 方括号标示公式中选元素选元素特定者省略
{ } 公式中括号组元素重复元素(零元素)括号符号指定
| 代符表示公式中半部分前半部分代
省略号表明元素重复出现意次果省略号出现组元素表示括号括起组
元素重复果出现单元素该元素重复
引入普通英语文语法元素定义法BNF表达时
SAP HANA 数库– SQL 参考手册
13
引言
章节描述 SAP HANA 数库 SQL 语言实施解释 SQL 特性理注释保留
字
SQL
SQL 代表结构化查询语言标准化连通关系数库语言SQL 获取存储操作数
库中信息
SQL 语言执行务:
集合(schema)定义操
操作数
系统理
会话理
事务理
支持语言代码页
SAP HANA 数库支持 Unicode 允许 Unicode 标准中语言限制 7 位 ACSII 代
码页
注释
SQL 语句添加注释增加读性维护性SQL 语句中注释分隔:
双连字符双连字符直行尾容 SQL 解析器认注释
**\种类型注释注释行容引号符*关闭符*\间
文字会 SQL 解析器忽略
标识符
<标识符> <简单标识符> | <双引号><特殊标识符><双引号>
<简单标识符> <字母> [{<字母数字>|<划线>} ]
<双引号>
<特殊标识符> 意单词
<字母> A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P
| Q | R | S
| T | U | V | W | X | Y | Z | a | b | c | d | e | f | g | h | i
| j | k | l | m SAP HANA 数库– SQL 参考手册
14
| n | o | p | q | r | s | t | u | v | w | x | y | z
<数字> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<字母数字> <字母> | <数字>
<划线> _
标识符表示 SQL 语句中名字包括表名视图名义字列名索引名函数名存储
程名户名角色名等等两种类型标识符:未定标识符分隔标识符
未分隔表名列名必须字母开头包含数字者划线外符号
分隔标识符分隔符双引号关闭然标识符包含字符包括特殊字符例
ABCD 效标识符
限制:
o _SYS_专门数库引擎保留允许出现集合象名字开头
o 角色名户名必须未分隔符指定
o 标识符长度 127 字母
单引号
单引号分隔字符串两单引号代表单引号身
双引号
双引号分隔标识符两双引号代表双引号身
SQL 保留字
保留字 SAP HANA 数库 SQL 解析器着特殊含义成户定义名字保留字
SQL 语句中集合象名果必双引号限定表列名绕限
制
表列出现未 SAP HANA 数库保留字
SAP HANA 数库– SQL 参考手册
15
表 1保留字
SAP HANA 数库– SQL 参考手册
16
数类型
节描述 SAP HANA 数库中数类型
数类型指定数值特性特殊值 NULL 包含数类型中表示值缺省表显
示 SAP HANA 数库中提供置数类型
数类型分类
SAP HANA 数库中数类型特点分:
表 2 数类型分类
日期时间类型
DATE
DATE 数类型年月日信息组成表示日期值DATA 类型默认格式YYYY
MMDD’YYYY 表示年MM 表示月 DD 表示日时间值范围 00010101 9999
1231
TIME
TIME 数类型时分钟秒信息组成表示时间值TIME 类型默认格式
HH24MISS’HH24 表示 0 24 时数MI 代表 0 59 分钟值 SS 表示 0 59
秒
SECONDDATE
SECONDDATE 数类型年月日时分钟秒表示日期时间值
SECONDDATE 类型默认格式YYYYMMDD HH24MISS’YYYY 代表年MM 代表月份
DD 代表日HH24 表示时MI 表示分钟SS 表示秒日期值范围 00010101
000001 99991231 240000
TIMESTAMP
TIMESTAMP 数类型日期时间信息组成默认格式YYYYMMDD
HH24MISSFF7’FFn 代表含数秒中 n 表示数部分数字位数时间戳范
围 00010101 0000000000000 99991231 2359599999999
关日期时间类型支持格式请参阅表 4表 5表 6 表 7
Date 格式 SAP HANA 数库– SQL 参考手册
17
面日期时间格式字符串解析日期时间类型日期时间类型解析成
字符串时请注意时间戳格式日期时间结合秒数部分额外支持
Format Description Examples
表 4:支持日期格式
Time 格式 SAP HANA 数库– SQL 参考手册
18
表 5:支持时间格式
Timestamp 格式
表 6:支持时间戳格式
SAP HANA 数库– SQL 参考手册
19
额外格式
表 7:DateTime 额外格式
日期时间类型支持函数:
ADD_DAYS
ADD_MONTHS
ADD_SECONDS
ADD_YEARS
COALESCE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_UTCDATE
CURRENT_UTCTIME
CURRENT_UTCTIMESTAMP
DAYNAME
DAYOFMONTH
DAYOFYEAR
DAYS_BETWEEN
EXTRACT
GREATEST
GREATEST
HOUR
IFNULL
ISOWEEK
LAST_DAY
LEAST
LOCALTOUTC
MINUTE
MONTH
MONTHNAME
NEXT_DAY SAP HANA 数库– SQL 参考手册
20
NULLIF
QUARTER
SECOND
SECONDS_BETWEEN
TO_CHAR
TO_DATE
TO_DATS
TO_NCHAR
TO_TIME
TO_TIMESTAMP
UTCTOLOCAL
WEEK
WEEKDAY
YEAR
数字类型
TINYINT
TINYINT 数类型存储 8 位符号整数TINYINT 值 0值 255
SMALLINT
SMALLINT 数类型存储 16 位符号整数SMALLINT 值32768 值
32 767
INTEGER
INTEGER 数类型存储 32 位符号整数INTEGER 值2147483648
值 2147483647
BIGINT
BIGINT 数类型存储 64 位符号整数INTEGER 值
9223372036854775808值 9 223372036854775807
DECIMAL(精度数位数) DEC(p s)
DECIMAL (p s) 数类型指定精度 p 数位数 s 定点数精度效位数
总数范围 1 34
数位数数点效数字数字数范围6111 6176表示位数指
定十进制数指数范围 106111 106176果没指定数位数默认值 0
数字效数字数点右侧时数位数正效数字数点左侧时数位
数负
例子:00000001234 (1234 x 1010) 精度 4数位数 10 10000001234
(10000001234 x 1010) 精度 11数位数 10 1234000000 (1234x106) 精度 4数
位数6
未指定精度数位数DECIMAL 成浮点数种情况精度数位数
文描述范围根存储数值134 精度 61116176 数位数
SMALLDECIMAL SAP HANA 数库– SQL 参考手册
21
SMALLDECIMAL 浮点十进制数精度数位数范围根存储
数值116 精度369368 数位数SMALLDECIMAL 支持列式存储
DECIMAL SMALLDECIMAL 浮点十进制数举例说十进制列存储 314
314153141592 时保持精度
DECIMAL(p s) SQL 定点十进制数标准标记例314 314153141592 存储
decimal(5 4)列中 31400 31415 31416保持精度(5)数位数(4)
REAL
REAL 数类型定义 32 位单精度浮点数
DOUBLE
DOUBLE 数类型定义 64 位单精度浮点数值179769 x 10308值
179769x10308DOUBLE 正数 22207x10308负数22207x10308
FLOAT( n )
FLOAT 数类型定义 32 位 64 位实数n 指定效数字数范围 1
53
FLOAT( n )数类型时果 n 25 会变成 32 位实数类型果 n
等 25会成 64 DOUBLE 数类型果 n 没声明默认变成 64 位
double 数类型
字符类型
字符类型存储包含字符串值VARCHAR 类型包含 ASCII 字符串 NVARCHAR
存储 Unicode 字符串
VARCHAR
VARCHAR (n) 数类型定义变长度 ASCII 字符串n 表示长度 1
5000 整数值
NVARCHAR
NVARCHAR (n) 数类型定义变长度 Unicode 字符串n 表示长度
1 5000 整数值
ALPHANUM
ALPHANUM (n) 数类型定义变长度包含字母数字字符串n 表示长度
1 127 整数值
SHORTTEXT
SHORTTEXT (n) 数类型定义变长度字符串支持文搜索字符搜索功
标准 SQL 类型选择列 SHORTTEXT (n) 列会生成 NVARCHAR (n)类型
列
22
二进制类型
二进制类型存储二进制数字节
VARBINARY
VARBINARY 数类型存储指定长度二进制数字节单位n 代表长
度 1 5000 整数
象(LOB)类型
LOB(象)数类型CLOBNCLOB BLOB存储量数例文文件图
LOB 2GB
BLOB
BLOB 数类型存储二进制数
CLOB
CLOB 数类型存储 ASCII 字符数
NCLOB
NCLOB 数类型存储 Unicode 字符象
TEXT
TEXT 数类型指定支持文搜索功独立 SQL 类型选择列 TEXT 列会
生成 NCLOB 类型列
| [SYNC[HRONOUS]
| [ASYNC[HRONOUS] FLUSH [QUEUE]
EVERY
TEXT SHORTTEXT 语法规
| LANGUAGE DETECTION '('
| MIME TYPE COLUMN
| FUZZY SEARCH INDEX [ON|OFF]
| PHRASE INDEX RATIO [ON|OFF]
| CONFIGURATION
| SEARCH ONLY [ON|OFF] SAP HANA 数库– SQL 参考手册
23
| FAST PREPROCESS [ON|OFF]
LOB 类型存储检索量数LOB 类型支持操作:
Length(n)字节形式返回 LOB 长度
LIKE 搜索 LOB 列
LOB 类型限制:
LOB 列出现 ORDER BY GROUP BY 子句中
LOB 列出现 FROM 子句作联接谓词
作谓词出现 WHERE 子句中 LIKECONTAINS<>
LOB 列出现 SELECT 子句作聚合函数参数
LOB 列出现 SELECT DISTINCT 语句中
LOB 列集合操作 EXCEPT UNION ALL 例外
LOB 列作键
LOB 列 CREATE INDEX 语句
LOB 列统计信息更新语句
SQL 数类型列存储数类型间映射
SAP HANA 数库– SQL 参考手册
24
数类型转换
节描述 SAP HANA 数库中允许类型转换
显式类型转换
表达式结果类型例字段索引字段函数者文字函数进行转
换:CAST TO_ALPHANUM TO_BIGINT TO_VARBINARY
TO_BLOB TO_CLOB TO_DATE TO_DATS TO_DECIMAL TO_DOUBLE TO_INTEGER TO_INT
TO_NCLOB TO_NVARCHAR TO_REAL TO_SECONDDATE TO_SMALLINT TO_TINYINT TO_TIME
TO_TIMESTAMP TO_VARCHAR
隐式类型转换
定系列运算符参数类型符合期类型SAP HANA 数库会执行类型
转换种转换仅仅发生相关转换供运算符参数类型执行举
例说BIGINT VARCHAR 间较通 VARCHAR 隐式转换成 BIGINT 进行
显式转换全部隐式转换 TIME TIMESTAMP 数类型 TIME
TIMESTAMP TO_TIME(TIMESTAMP) TO_TIMESTAMP(TIME)相互转换
例子
表 8: 隐式类型转换例子
表中:
方框中OK表示允许数类型转换没检查
方框中CHK表示数类型转换数效目标类型时执行
方框中表示允许该数类型转换 SAP HANA 数库– SQL 参考手册
25
显示规时适隐式显示转换 TIME TIMESTAMP 转换TIME 类型通
显示转换 TO_TIMESTAMP 者 CAST 函数执行
表 9a:数类型转换表
表 9b:数类型转换表 SAP HANA 数库– SQL 参考手册
26
表 9c:数类型转换表
数类型优先序
节介绍 SAP HANA 数库实施数类型优先级数类型优先级指定较低优先级类型转
换较高优先级类型
SAP HANA 数库– SQL 参考手册
27
类型常量
常量表示特定固定数值符号
字符串常量
字符串常量括单引号中
o 'Brian'
o '100'
Unicode 字符串格式字符串相似前面 N 标识符(N 代表 SQL92 标准中国
际语言)N 前缀必须写
o N'abc'
SELECT 'Brian' character string 1 '100' character string 2 N'abc' unicode st
ring FROM DUMMY
character string 1 character string 2 unicode string
Brian 100 abc
数字常量
数字常量没括单引号中数字字符串表示数字包含数点者科学计数
o 123
o 1234
o 1234e2
十六进制数字常量十六进制数字符串含前缀 0x
o 0x0abc
SELECT 123 integer 1234 decimal1 1234e2 decimal2 0x0abc hexadecimal FR
OM DUMMY
integer decimal1 decimal2 hexadecimal
123 1234 1234 2748
二进制字符串常量
二进制字符串前缀 X括单引号中十六进制数字字符串
o X'00abcd'
o x'dcba00'
SELECT X'00abcd' binary string 1 x'dcba00' binary string 2 FROM DUMMY
binary string 1 binary string 2
00ABCD DCBA00 SAP HANA 数库– SQL 参考手册
28
日期时间时间戳常量
日期时间时间戳前缀:
o date'20100101'
o time'110000001'
o timestamp'20111231 235959'
SELECT date'20100101' date time'110000001' time timestamp'20111231 23
5959' timestamp FROM DUMMY
date time timestamp
20100101 110000 20111231 2359590
SAP HANA 数库– SQL 参考手册
29
谓词
谓词组合表达式者逻辑运算符指定返回逻辑真值中:
TRUEFALSE者 UNKNOW
较谓词
两值较谓词进行较返回 TRUEFALSE UNKNOW
语法:
表达式简单表达式字符日期者数字标量子查询
ANY SOME – 指定 ANY 者 SOME 关键字果子查询返回 少结果者
expression_list 真较操作返回真ALL 指定 ALL 时果子查询返回结果者
expression_list 真较操作返回真
范围谓词
值定范围中进行较
语法:
BETWEEN …AND … 指定范围谓词时果 expression1 expression2 expression3 指定
范围时结果返回真果 expression2 expression3 返回真
In 谓词
值组指定值较果 expression1 值 expression_list(子查询)中结果返回
真
语法:
Exists 谓词
果子查询返回非空结果集结果真返回空结果集结果假
Like 谓词 SAP HANA 数库– SQL 参考手册
30
Like 较字符串Expression1 包含 expression2 中模式较通配符()(_)
较字符串 expression2 中
NULL 谓词
指定谓词 IS NULL值 NULL 较果表达式值 NULL IS NULL 返回值真
果指定谓词 IS NOT NULL值 NULL 时返回值真
语法:
null_predicate>
CONTAINS 谓词
CONTAINS 谓词搜索子查询中文匹配字符串
语法:
| CONTAINS '('
|
|
|
| FUZZY '('
31
| FUZZY '('
search_string
式字符串搜索格式(例Peter Palo Alto Berlin SAP LABS)
search_specifier
果没指定 search_specifierEXACT 默认值
EXACT
search_attributes 中精确匹配 searchterms 记录EXACT 返回真
FUZZY
search_attributes 相似匹配 searchterms 记录FUZZY 返回真(例某种程度忽略
拼写错误)
Float_const
果省略 float_const默认值 08通定义列式存储联接视图支持参数
FUZZINESSTHRESHOLD 覆盖默认值
WEIGHT
果定义 weights 列表必须
LANGUAGE
LANGUAGE 搜索字符串预处理中作搜索前滤返回匹配搜索字符串文
档定义语言
LINGUISTIC
searchattribute 中出现 searchterms 字符变量LINGUISTIC 返回真
SAP HANA 数库– SQL 参考手册
32
限制:果 where 条件中定义 CONTAINS中
表中止列组成
CONTAINS 列式存储表适(简单表联接视图)
例子
精确搜索:
select * from T where contains(column1 'dog OR cat') EXACT is implicit select
* from T where contains(column1 'dog OR cat' EXACT)
select * from T where contains(column1 'cats and dogs') phrase search
模糊搜索:
select * from T where contains(column1 'catz' FUZZY(08))
语言搜索
select * from T where contains(column1 'catz' LINGUISTIC)
式搜索:
式搜索列搜索
select * from T where CONTAINS( (column1column2column3) 'cats OR dogz' FUZZY(0
7))
select * from T where CONTAINS( (column1column2column3) 'cats OR dogz' FUZZY(0
7))
SAP HANA 数库– SQL 参考手册
33
操作符
表达式中操作符进行算术运算操作符计算较值者赋值
元二元操作符
表 10 元二元操作符
操作符优先级
表达式操作符果操作符 SAP HANA 数库会根操作符优先
级评估通括号改变序括号表达式会第评估
果没括号操作符优先级根表请注意SAP HANA 数库优先级相操
作符左右评估操作符 SAP HANA 数库– SQL 参考手册
34
算术操作符
算术操作符执行数学运算加法减法法法负数
表 12 算术操作符
字符串操作符
级联操作符结合两项类似字符串表达式者常量项中
表 13 级联操作符
VARCHAR 者 NVARCHAR 类型字符串前导者置空格保留果中字符串类型
NVARCHAR结果 NVARCHAR 限制 5000 字母VARCHAR 联接长度限
制 5000 字母 SAP HANA 数库– SQL 参考手册
35
较操作符
语法:
表 14 较操作符
逻辑操作符
搜索条件 AND 者 OR 操作符结合 NOT 操作符否定条件
表 15:逻辑操作符
集合操作符
节中述操作符两更查询结果执行集合操作 SAP HANA 数库– SQL 参考手册
36
表 16:集合操作符
表达式
表达式计算返回值子句
语法:
|
|
| (
| (
|
|
|
|
| [
Case 表达式
Case 表达式允许户 IF THEN ELSE 逻辑 SQL 语句中调存储程
语法:
CASE
WHEN
[ ELSE
{ END | END CASE }
果位 CASE 语句面表达式 WHEN 面表达式相等 THEN 表达式作返回
值否返回 ELSE 语句表达式果存话
Function 表达式 SAP HANA 数库– SQL 参考手册
37
SQL 置函数作表达式
语法:
Aggregate 表达式
Aggregate 表达式利 aggregate 函数计算列中行值
语法
)
表达式中子查询
子查询括号中 SELECT 语句SELECT 语句包含仅选择项作表达
式时标量子查询允许返回零值
语法:
高级 SELECT 中 SELECT 列表者 UPDATE 语句中 SET 条件中
列名方标量子查询scalar_subquery GROUP BY 条件中
例子:
语句返回部门中员工数根部门名字分组: SAP HANA 数库– SQL 参考手册
38
SELECT DepartmentName COUNT(*) 'out of'
(SELECT COUNT(*) FROM Employees)
FROM Departments AS D Employees AS E
WHERE DDepartmentID EDepartmentID
GROUP BY DepartmentName
SAP HANA 数库– SQL 参考手册
39
SQL 函数
介绍
章介绍 SAP HANA 数库提供 SQL 函数
Data Type Conversion Functions
DateTime Functions
Number Functions
String Functions
Miscellaneous Functions
数类型转换函数
数类型转换函数参数数类型转换数类型者测试转换否行
CAST
语法:
CAST (expression AS data_type)
语法元素:
Expression – 转换表达式Data type – 目标数类型TINYINT | SMALLINT |
INTEGER | BIGINT | DECIMAL | SMALLDECIMAL | REAL | DOUBLE | ALPHANUM | VARCHAR |
NVARCHAR | DAYDATE | DATE | TIME | SECONDDATE | TIMESTAMP
描述:
返回转换提供数类型表达式
例子:
SELECT CAST (7 AS VARCHAR) cast FROM DUMMY
Cast
7
TO_ALPHANUM
语法:
TO_ALPHANUM (value)
描述:
定 value 转换 ALPHANUM 数类型 SAP HANA 数库– SQL 参考手册
40
例子:
SELECT TO_ALPHANUM ('10') to alphanum FROM DUMMY
to alphanum
10
TO_BIGINT
语法:
TO_BIGINT (value)
描述:
value 转换 BIGINT 类型
例子:
SELECT TO_BIGINT ('10') to bigint FROM DUMMY
to bigint
10
TO_BINARY
语法:
TO_BINARY (value)
描述:
value 转换 BINARY 类型
例子:
SELECT TO_BINARY ('abc') to binary FROM DUMMY
to binary
616263
TO_BLOB
语法:
TO_BLOB (value)
描述:
value 转换 BLOB 类型参数值必须二进制字符串 SAP HANA 数库– SQL 参考手册
41
例子:
SELECT TO_BLOB (TO_BINARY('abcde')) to blob FROM DUMMY
to blob
abcde
TO_CHAR
语法:
TO_CHAR (value [ format])
描述:
value 转换 CHAR 类型果省略 format 关键字转换会 Date Formats 中说明日期
格式模型
例子:
SELECT TO_CHAR (TO_DATE('20091231') 'YYYYMMDD') to char FROM DUMMY
to char
20091231
TO_CLOB
语法:
TO_CLOB (value)
描述
value 转换 CLOB 类型
例子:
SELECT TO_CLOB ('TO_CLOB converts the value to a CLOB data type') to clob FROM DUMMY
to clob
TO_CLOB converts the value to a CLOB data type
TO_DATE
语法:
TO_DATE (d [ format])
描述: SAP HANA 数库– SQL 参考手册
42
日期字符串 d 转换 DATE 数类型果省略 format 关键字转换会 Date Formats 中
说明日期格式模型
例子:
SELECT TO_DATE('20100112' 'YYYYMMDD') to date FROM DUMMY
to date
20100112
TO_DATS
语法:
TO_DATS (d)
描述:
字符串 d 转换 ABAP 日期字符串格式YYYYMMDD
例子:
SELECT TO_DATS ('20100112') abap date FROM DUMMY
abap date
20100112
TO_DECIMAL
语法:
TO_DECIMAL (value [ precision scale])
描述:
value 转换 DECIMAL 类型
精度效数字总数范围 1 34数位数数点效数字数字数范围
6111 6176表示位数指定十进制数指数范围 106111 106176果没指定
数位数默认值 0数字效数字数点右侧时数位数正效数字
数点左侧时数位数负
未指定精度数位数DECIMAL 成浮点数种情况精度数位数文描
述范围根存储数值精度 134 数位数 61116176
例子:
SELECT TO_DECIMAL(7654321888888 10 3) to decimal FROM DUMMY SAP HANA 数库– SQL 参考手册
43
to decimal
7654321889
TO_DOUBLE
语法:
TO_DOUBLE (value)
描述:
value 转换 DOUBLE(双精度)数类型
例子:
SELECT 3*TO_DOUBLE ('1512') to double FROM DUMMY
to double
4536
TO_INT
语法:
TO_INT (value)
描述:
value 转换 INTEGER 类型
例子:
SELECT TO_INT('10') to int FROM DUMMY
to int
10
TO_INTEGER
语法:
TO_INTEGER (value)
描述:
value 转换 INTEGER 类型
例子:
SELECT TO_INT('10') to int FROM DUMMY SAP HANA 数库– SQL 参考手册
44
to int
10
TO_NCHAR
语法:
TO_NCHAR (value [ format])
描述:
value 转换 NCHAR Unicode 字符类型果省略 format 关键字转换会 Date Formats
中说明日期格式模型
例子:
SELECT TO_NCHAR (TO_DATE('20091231') 'YYYYMMDD') to nchar FROM DUMMY
to nchar
20091231
TO_NCLOB
语法:
TO_NCLOB (value)
描述:
value 转换 NCLOB 数类型
例子:
SELECT TO_NCLOB ('TO_NCLOB converts the value to a NCLOB data type') to nclob FROM DUMMY
to nclob
TO_NCLOB converts the value to a NCLOB data type
TO_NVARCHAR
语法:
TO_NVARCHAR (value [format])
描述:
value 转换 NVARCHAR Unicode 字符类型果省略 format 关键字转换会 Date
Formats 中说明日期格式模型
例子: SAP HANA 数库– SQL 参考手册
45
SELECT TO_NVARCHAR(TO_DATE('20091231') 'YYMMDD') to nchar FROM DUMMY
to nchar
091231
TO_REAL
语法:
TO_REAL (value)
描述:
value 转换实数(单精度)数类型
例子:
SELECT 3*TO_REAL ('1512') to real FROM DUMMY
to real
4536000061035156
TO_SECONDDATE
语法:
TO_SECONDDATE (d [ format])
描述:
value 转换 SECONDDATE 类型果省略 format 关键字转换会 Date Formats 中说明
日期格式模型
例子:
SELECT TO_SECONDDATE ('20100111 133000' 'YYYYMMDD HH24MISS') to seconddate FROM
DUMMY
to seconddate
20100111 1330000
TO_SMALLDECIMAL
语法:
TO_SMALLDECIMAL (value)
描述:
value 转换 SMALLDECIMAL 类型
例子: SAP HANA 数库– SQL 参考手册
46
SELECT TO_SMALLDECIMAL(765432189) to smalldecimal FROM DUMMY
to smalldecimal
765432189
TO_SMALLINT
语法:
TO_SMALLINT (value)
描述:
value 转换 SMALLINT 类型
例子:
SELECT TO_SMALLINT ('10') to smallint FROM DUMMY
to smallint
10
TO_TIME
语法:
TO_TIME (t [ format])
描述:
时间字符串 t 转换 TIME 类型果省略 format 关键字转换会 Date Formats 中说明
日期格式模型
例子:
SELECT TO_TIME ('0830 AM' 'HHMI AM') to time FROM DUMMY
to time
083000
TO_TIMESTAMP
语法:
TO_TIMESTAMP (d [ format])
描述:
时间字符串 t 转换 TIMESTAMP 类型果省略 format 关键字转换会 Date Formats
中说明日期格式模型
例子: SAP HANA 数库– SQL 参考手册
47
SELECT TO_TIMESTAMP ('20100111 133000' 'YYYYMMDD HH24MISS') to timestamp
FROM DUMMY
to timestamp
20100111 1330000
TO_TINYINT
语法:
TO_TINYINT (value)
描述:
value 转换 TINYINT 类型
例子
SELECT TO_TINYINT ('10') to tinyint FROM DUMMY
to tinyint
10
TO_VARCHAR
语法:
TO_VARCHAR (value [ format])
描述
定 value 转换 VARCHAR 字符串类型果省略 format 关键字转换会 Date Formats
中说明日期格式模型
例子:
SELECT TO_VARCHAR (TO_DATE('20091231') 'YYYYMMDD') to char FROM DUMMY
to char
20091231
日期时间函数
ADD_DAYS
语法
ADD_DAYS (d n)
描述: SAP HANA 数库– SQL 参考手册
48
计算日期 d n 天值
例子:
SELECT ADD_DAYS (TO_DATE ('20091205' 'YYYYMMDD') 30) add days FROM DUMMY
add days
20100104
ADD_MONTHS
语法:
ADD_MONTHS (d n)
描述:
计算日期 d n 月值
例子:
SELECT ADD_MONTHS (TO_DATE ('20091205' 'YYYYMMDD') 1) add months FROM DUMMY
add months
20100105
ADD_SECONDS
语法:
ADD_SECONDS (t n)
描述:
计算时间 t n 秒值
例子:
SELECT ADD_SECONDS (TO_TIMESTAMP ('20120101 233045') 60*30) add seconds FROM
DUMMY
add seconds
20120102 0000450
ADD_YEARS
语法: SAP HANA 数库– SQL 参考手册
49
ADD_YEARS (d n)
描述:
计算日期 d n 年值
例子:
SELECT ADD_YEARS (TO_DATE ('20091205' 'YYYYMMDD') 1) add years FROM DUMMY
add years
20101205
CURRENT_DATE
语法:
CURRENT_DATE
描述:
返回前系统日期
例子:
SELECT CURRENT_DATE current date FROM DUMMY
current date
20100111
CURRENT_TIME
语法:
CURRENT_TIME
描述:
返回前系统时间
例子:
SELECT CURRENT_TIME current time FROM DUMMY
current time
173737
CURRENT_TIMESTAMP
语法:
CURRENT_TIMESTAMP SAP HANA 数库– SQL 参考手册
50
描述:
返回前系统时间戳信息
例子:
SELECT CURRENT_TIMESTAMP current timestamp FROM DUMMY
current timestamp
20100111 173848802
CURRECT_UTCDATE
语法:
CURRENT_UTCDATE
描述:
返回前 UTC 日期UTC 代表协调世界时称格林尼治标准时间(GMT)
例子:
SELECT CURRENT_UTCDATE Coordinated Universal Date FROM DUMMY
Coordinated Universal Time
20100111
CURRENT_UTCTIME
语法:
CURRENT_UTCTIME
描述:
返回前 UTC 时间
例子:
SELECT CURRENT_UTCTIME Coordinated Universal Time FROM DUMMY
Coordinated Universal Time
084119
CURRENT_UTCTIMESTAMP
语法:
CURRENT_UTCTIMESTAMP SAP HANA 数库– SQL 参考手册
51
描述:
返回前 UTC 时间戳
例子:
SELECT CURRENT_UTCTIMESTAMP Coordinated Universal Timestamp FROM DUMMY
Coordinated Universal Timestamp
20100111 084142484
DAYNAME
语法:
DAYNAME (d)
描述:
返回周中日期 d 英文名
例子:
SELECT DAYNAME ('20110530') dayname FROM DUMMY
dayname
MONDAY
DAYOFMONTH
语法:
DAYOFMONTH (d)
描述:
返回月中日期 d 整数数字
例子:
SELECT DAYOFMONTH ('20110530') dayofmonth FROM DUMMY
dayofmonth
30
DAYOFYEAR
语法:
DAYOFYEAR (d) SAP HANA 数库– SQL 参考手册
52
描述
返回年中代表日期 d 整数数字
例子:
SELECT DAYOFYEAR ('20110530') dayofyear FROM DUMMY
dayofyear
150
DAYS_BETWEEN
语法:
DAYS_BETWEEN (d1 d2)
描述:
计算 d1 d2 间日期数
例子:
SELECT DAYS_BETWEEN (TO_DATE ('20091205' 'YYYYMMDD') TO_DATE('20100105' 'YYYYMM
DD')) days between FROM DUMMY
days between
31
EXTRACT
语法:
EXTRACT ({YEAR | MONTH | DAY | HOUR | MINUTE | SECOND} FROM d)
描述:
返回日期 d 中指定时间日期字段值
例子:
SELECT EXTRACT (YEAR FROM TO_DATE ('20100104' 'YYYYMMDD')) extract FROM DUMMY
extract
2010
HOUR
语法:
HOUR (t) SAP HANA 数库– SQL 参考手册
53
描述:
返回时间 t 中表示时整数
例子:
SELECT HOUR ('123456') hour FROM DUMMY
hour
12
ISOWEEK
语法:
ISOWEEK (d)
描述:
返回日期 d ISO 年份星期数星期数前缀字母 W请阅 WEEK
例子:
SELECT ISOWEEK (TO_DATE('20110530' 'YYYYMMDD')) isoweek FROM DUMMY
Isoweek
2011W22
LAST_DAY
语法:
LAST_DAY (d)
描述:
返回包含日期 d 月天日期
例子:
SELECT LAST_DAY (TO_DATE('20100104' 'YYYYMMDD')) last day FROM DUMMY
last day
20100131
LOCALTOUTC
语法:
LOCALTOUTC (t timezone) SAP HANA 数库– SQL 参考手册
54
描述:
timezone 时间 t 转换 UTC 时间
例子:
SELECT LOCALTOUTC (TO_TIMESTAMP('20120101 010000' 'YYYYMMDD HH24MISS') '
EST') localtoutc FROM DUMMY
localtoutc
20120101 0600000
MINUTE
语法
MINUTE(t)
描述:
返回时间 t 中表示分钟数字
例子:
SELECT MINUTE ('123456') minute FROM DUMMY
minute
34
MONTH
语法:
MONTH(d)
描述:
返回日期 d 月份数字
例子:
SELECT MONTH ('20110530') month FROM DUMMY
month
5
MONTHNAME
语法: SAP HANA 数库– SQL 参考手册
55
MONTHNAME(d)
描述:
返回日期 d 月份英文名
例子:
SELECT MONTHNAME ('20110530') monthname FROM DUMMY
monthname
MAY
NEXT_DAY
语法:
NEXT_DAY (d)
描述:
返回日期 d 第二天
例子:
SELECT NEXT_DAY (TO_DATE ('20091231' 'YYYYMMDD')) next day FROM DUMMY
next day
20100101
NOW
语法:
NOW ()
描述:
返回前时间戳
例子:
SELECT NOW () now FROM DUMMY
now
20100101 163419894
QUARTER
语法: SAP HANA 数库– SQL 参考手册
56
QUARTER (d [ start_month ])
描述:
返回日期 d 年份季度第季度 start_month 定义月份开始果没定义
start_month第季度假设月开始
例子:
SELECT QUARTER (TO_DATE('20120101' 'YYYYMMDD') 2) quarter FROM DUMMY
quarter
2011Q4
SECOND
语法:
SECOND (t)
描述:
返回时间 t 表示秒数
例子:
SELECT SECOND ('123456') second FROM DUMMY
second
56
SECONDS_BETWEEN
语法:
SECONDS_BETWEEN (d1 d2)
描述:
计算日期参数 d1 d2 间秒数语义等 d2d1
例子:
SELECT SECONDS_BETWEEN ('20091205' '20100105') seconds between FROM DUMMY
seconds between
2678400
UTCTOLOCAL
语法: SAP HANA 数库– SQL 参考手册
57
UTCTOLOCAL (t timezone)
描述:
UTC 时间值转换时区 timezone 时间
例子:
SELECT UTCTOLOCAL (TO_TIMESTAMP('20120101 010000' 'YYYYMMDD HH24MISS') 'EST')
utctolocal FROM DUMMY
utctolocal
20111231 2000000
WEEK
语法:
WEEK (d)
描述:
返回日期 d 星期整数数字请参阅 ISOWEEK
例子:
SELECT WEEK (TO_DATE('20110530' 'YYYYMMDD')) week FROM DUMMY
week
23
WEEKDAY
语法:
WEEKDAY (d)
描述:
返回代表日期 d 星期日期数字返回值范围 0 6表示 Monday(0) Sunday(6)
例子:
SELECT WEEKDAY (TO_DATE ('20101231' 'YYYYMMDD')) week day FROM DUMMY
week day
4
YEAR
语法: SAP HANA 数库– SQL 参考手册
58
YEAR (d)
描述:
返回日期 d 年份数
例子:
SELECT YEAR (TO_DATE ('20110530' 'YYYYMMDD')) year FROM DUMMY
year
2011
数字函数
数字函数接受数字者带数字字符串作输入返回数值数字字符字符串作输入
时计算结果前动执行字符串数字隐式转换
ABS
语法:
ABS (n)
描述:
返回数字参数 n 绝值
例子:
SELECT ABS (1) absolute FROM DUMMY
absolute
1
ACOS
语法:
ACOS (n)
描述:
返回参数 n 反余弦弧度单位值1 1
例子:
SELECT ACOS (05) acos FROM DUMMY
acos
10471975511965979 SAP HANA 数库– SQL 参考手册
59
ASIN
语法:
ASIN (n)
描述:
返回参数 n 反正弦值弧度单位值1 1
例子:
SELECT ASIN (05) asin FROM DUMMY
asin
05235987755982989
ATAN
语法:
ATAN (n)
描述:
返回参数 n 反正切值弧度单位n 范围限
例子:
SELECT ATAN (05) atan FROM DUMMY
atan
04636476090008061
ATAN2
语法:
ATAN2 (n m)
描述:
返回两数 n m 率反正切值弧度单位 ATAN(nm)结果致
例子:
SELECT ATAN2 (10 20) atan2 FROM DUMMY
atan2
04636476090008061 SAP HANA 数库– SQL 参考手册
60
BINTOHEX
语法:
BINTOHEX (expression)
描述:
二进制值转换十六进制
例子:
SELECT BINTOHEX('AB') bintohex FROM DUMMY
bintohex
4142
BITAND
语法:
BITAND (n m)
描述:
参数 n m 位执行 AND 操作n m 必须非负整数BITAND 函数返回 BIGINT 类型结
果
例子:
SELECT BITAND (255 123) bitand FROM DUMMY
bitand
123
CEIL
语法:
CEIL(n)
描述:
返回者等 n 第整数
例子:
SELECT CEIL (145) ceiling FROM DUMMY
ceiling
15 SAP HANA 数库– SQL 参考手册
61
COS
语法:
COS (n)
描述:
返回参数 n 余弦值弧度单位
例子:
SELECT COS (00) cos FROM DUMMY
cos
10
COSH
语法:
COSH (n)
描述:
返回参数 n 双曲余弦值
例子:
SELECT COSH (05) cosh FROM DUMMY
cosh
11276259652063807
COT
语法:
COT (n)
描述:
计算参数 n 余切值中 n 弧度表示
例子:
SELECT COT (40) cot FROM DUMMY
cot
08950829176379128 SAP HANA 数库– SQL 参考手册
62
EXP
语法:
EXP (n)
描述:
返回 e 底n 指数计算结果
例子:
SELECT EXP (10) exp FROM DUMMY
exp
2718281828459045
FLOOR
语法:
FLOOR (n)
描述:
返回参数 n 数
例子
SELECT FLOOR (145) floor FROM DUMMY
floor
14
GREATEST
语法:
GREATEST (n1 [ n2])
描述:
返回参数 n1n2…数
例子:
SELECT GREATEST ('aa' 'ab' 'ba' 'bb') greatest FROM DUMMY
greatest
bb SAP HANA 数库– SQL 参考手册
63
HEXTOBIN
语法:
HEXTOBIN (value)
描述:
十六进制数转换二进制数
例子:
SELECT HEXTOBIN ('1a') hextobin FROM DUMMY
hextobin
1A
LEAST
语法:
LEAST (n1 [ n2])
描述:
返回参数 n1n2…数
例子:
SELECT LEAST('aa' 'ab' 'ba' 'bb') least FROM DUMMY
least
aa
LN
语法:
LN (n)
描述:
返回参数 n 然数
例子:
SELECT LN (9) ln FROM DUMMY
ln
21972245773362196 SAP HANA 数库– SQL 参考手册
64
LOG
语法:
LOG (b n)
描述:
返回 b 底n 然数值底 b 必须 1 正数 n 必须正数
例子:
SELECT LOG (10 2) log FROM DUMMY
log
030102999566398114
MOD
语法:
MOD (n d)
描述:
返回 n 整 b 余数值
n 负时该函数行标准模运算
列举 MOD 函数返回结果例子
果 d 零返回 n
果 n 零 n d返回 n
果 n 零 n d返回 n
文提情况中利 n 绝值 d 绝值计算余数果 n 0 MOD
返回余数负数果 n 零MOD 返回余数正数
例子:
SELECT MOD (15 4) modulus FROM DUMMY
modulus
3
SELECT MOD (15 4) modulus FROM DUMMY
modulus
3 SAP HANA 数库– SQL 参考手册
65
POWER
语法:
POWER (b e)
描述:
计算 b 底e 指数值
例子:
SELECT POWER (2 10) power FROM DUMMY
power
10240
ROUND
语法:
ROUND (n [ pos])
描述:
返回参数 n 数点 pos 位置值
例子:
SELECT ROUND (1616 1) round FROM DUMMY
round
162
SELECT ROUND (1616 1) round FROM DUMMY
round
20
SIGN
语法:
SIGN (n)
描述:
返回 n 符号(正负)果 n 正返回 1n 负返回1n 0 返回 0
例子: SAP HANA 数库– SQL 参考手册
66
SELECT SIGN (15) sign FROM DUMMY
sign
1
SIN
语法:
SIN (n)
描述:
返回参数 n 正弦值弧度单位
例子:
SELECT SIN ( 31415926535897932) sine FROM DUMMY
sine
10
SINH
语法:
SINH (n)
描述:
返回 n 双曲正弦值弧度单位
例子:
SELECT SINH (00) sinh FROM DUMMY
sinh
00
SQRT
语法:
SQRT (n)
描述:
返回 n 方根
例子: SAP HANA 数库– SQL 参考手册
67
SELECT SQRT (2) sqrt FROM DUMMY
sqrt
14142135623730951
TAN
语法:
TAN (n)
描述:
返回 n 正切值弧度单位
例子:
SELECT TAN (00) tan FROM DUMMY
tan
00
TANH
语法:
TANH (n)
描述:
返回 n 双曲正切值弧度单位
例子:
SELECT TANH (10) tanh FROM DUMMY
tanh
07615941559557649
UMINUS
语法:
UMINUS (n)
描述:
返回 n 负值
例子: SAP HANA 数库– SQL 参考手册
68
SELECT UMINUS(765) uminus FROM DUMMY
uminus
765
字符串函数
ASCII
语法:
ASCII(c)
描述:
返回字符串 c 中第字节 ASCII 值
SELECT ASCII('Ant') ascii FROM DUMMY
ascii
65
CHAR
语法:
CHAR (n)
描述:
返回 ASCII 值数字 n 字符
例子:
SELECT CHAR (65) || CHAR (110) || CHAR (116) character FROM DUMMY
character
Ant
CONCAT
语法:
CONCAT (str1 str2)
描述:
返回位 str1 str2 联合组成字符串级联操作符(||)该函数作相
例子: SAP HANA 数库– SQL 参考手册
69
SELECT CONCAT ('C' 'at') concat FROM DUMMY
concat
Cat
LCASE
语法:
LCASE(str)
描述:
字符串 str 中字符转换写
注意:LCASE 函数作 LOWER 函数相
例子:
SELECT LCASE ('TesT') lcase FROM DUMMY
lcase
test
LEFT
语法:
LEFT (str n)
描述:
返回字符串 str 开头 n 字符位字符
例子:
SELECT LEFT ('Hello' 3) left FROM DUMMY
left
Hel
LENGTH
语法:
LENGTH(str)
描述:
返回字符串 str 中字符数象(LOB)类型该函数返回象字节长度 SAP HANA 数库– SQL 参考手册
70
例子:
SELECT LENGTH ('length in char') length FROM DUMMY
length
14
LOCATE
语法:
LOCATE (haystack needle)
描述:
返回字符串 haystack 中子字符串 needle 位置果未找返回 0
例子:
SELECT LOCATE ('length in char' 'char') locate FROM DUMMY
Locate
11
SELECT LOCATE ('length in char' 'length') locate FROM DUMMY
Locate
1
SELECT LOCATE ('length in char' 'zchar') locate FROM DUMMY
Locate
0
LOWER
语法:
LOWER (str)
描述:
字符串 str 中字符转换写
注意:LOWER 函数作 LCASE 相
例子:
SELECT LOWER ('AnT') lower FROM DUMMY SAP HANA 数库– SQL 参考手册
71
lower
ant
LPAD
语法:
LPAD (str n [ pattern])
描述:
左边开始字符串 str 空格进行填充达 n 指定长度果指定 pattern 参数字符
串 str 序填充直满足 n 指定长度
例子:
SELECT LPAD ('end' 15 '12345') lpad FROM DUMMY
lpad
123451234512end
LTRIM
语法:
LTRIM (str [ remove_set])
描述:
返回字符串 str 截取前导空格值果定义 remove_setLTRIM 起始位置移字符串
str 包含该集合中字符该程持续达 remove_set 中字符
注意:remove_set 视字符集合非搜索字符
例子:
SELECT LTRIM ('babababAabend''ab') ltrim FROM DUMMY
ltrim
Aabend
NCHAR
语法:
NCHAR (n)
描述:
返回整数 n 表示 Unicode 字符 SAP HANA 数库– SQL 参考手册
72
例子:
SELECT NCHAR (65) nchar FROM DUMMY
nchar
A
REPLACE
语法:
REPLACE (original_string search_string replace_string)
描述:
搜索 original_string 出现 search_string replace_string 换
果 original_string 空 返回值空
果 original_string 中两重叠子字符串 search_string 匹配第会换
果 original_string 未出现 search_string返回未修改 original_string
果 original_stringsearch_string 者 replace_string NULL返回值 NULL
例子:
SELECT REPLACE ('DOWNGRADE DOWNWARD''DOWN' 'UP') replace FROM DUMMY
replace
UPGRADE UPWARD
RIGHT
语法:
RIGHT(str n)
描述:
返回字符串 str 中右边 n 字符字节
例子:
SELECT RIGHT('HI0123456789' 3) right FROM DUMMY
right
789
RPAD
语法:
RPAD (str n [ pattern]) SAP HANA 数库– SQL 参考手册
73
描述:
尾部开始字符串 str 空格进行填充达 n 指定长度果指定 pattern 参数字符
串 str 序填充直满足 n 指定长度
例子:
SELECT RPAD ('end' 15 '12345') right padded FROM DUMMY
right padded
end123451234512
RTRIM
语法:
RTRIM (str [remove_set ])
描述:
返回字符串 str 截取置空格值果定义 remove_setRTRIM 尾部位置移字符
串 str 包含该集合中字符该程持续达 remove_set 中字符
注意:remove_set 视字符集合非搜索字符
例子:
SELECT RTRIM ('endabAabbabab''ab') rtrim FROM DUMMY
rtrim
endabA
SUBSTR_AFTER
语法:
SUBSTR_AFTER (str pattern)
描述:
返回 str 中位 pattern 第次出现位置子字符串
果 str 包含 pattern 子字符串返回空字符串
果 pattern 空字符串返回 str
果 str 者 pattern NULL返回 NULL
例子:
SELECT SUBSTR_AFTER ('Hello My Friend''My ') substr after FROM DUMMY SAP HANA 数库– SQL 参考手册
74
substr after
Friend
SUBSTR_BEFORE
语法:
SUBSTR_BEFORE (str pattern)
描述:
返回 str 中位 pattern 第次出现位置前子字符串
果 str 包含 pattern 子字符串返回空字符串
果 pattern 空字符串返回 str
果 str 者 pattern NULL返回 NULL
例子:
SELECT SUBSTR_BEFORE ('Hello My Friend''My') substr before FROM DUMMY
substr before
Hello
SUBSTRING
语法:
SUBSTRING (str start_position [ string_length])
描述:
返回字符串 str start_position 开始子字符串SUBSTRING 返回 start_position 起剩余部
分字符者作选返回 string_length 参数设置字符数
果 start_position 0视 1
果 string_length 1返回空字符串
例子:
SELECT SUBSTRING ('1234567890'42) substring FROM DUMMY
substring
45
TRIM
语法: SAP HANA 数库– SQL 参考手册
75
TRIM ([[LEADING | TRAILING | BOTH] trim_char FROM] str )
描述:
返回移前导置空格字符串 str截断操作起始(LEADING)结尾(TRAILING)者两端
(BOTH)执行
果 str 者 trim_char 空返回 NULL
果没指定选项TRIM 移字符串 str 中两端子字符串 trim_char
果没指定 trim_char单空格
例子:
SELECT TRIM ('a' FROM 'aaa123456789aa') trim both FROM DUMMY
trim both
123456789
SELECT TRIM (LEADING 'a' FROM 'aaa123456789aa') trim leading FROM DUMMY
trim leading
123456789aa
UCASE
语法:
UCASE (str)
描述:
字符串 str 中字符转换写
注意:UCASE 函数作 UPPER 函数相
例子:
SELECT UCASE ('Ant') ucase FROM DUMMY
ucase
ANT
UNICODE
语法:
UNICODE(c)
描述: SAP HANA 数库– SQL 参考手册
76
返回字符串中首字母 UnIcode 字符码数字果首字母效编码返回 NULL
例子:
SELECT UNICODE ('#') unicode FROM DUMMY
unicode
35
UPPER
语法:
UPPER (str)
描述:
字符串 str 中字符转换写
注意:UPPER 函数作 UCASE 相
例子:
SELECT UPPER ('Ant') uppercase FROM DUMMY
uppercase
ANT
杂项函数
COALESCE
语法:
COALESCE (expression_list)
描述:
返回 list 中非 NULL 表达式Expression_list 中必须包含少两表达式表达式
较果参数 NULL结果 NULL
例子:
CREATE TABLE coalesce_example (ID INT PRIMARY KEY A REAL B REAL)
INSERT INTO coalesce_example VALUES(1 100 80)
INSERT INTO coalesce_example VALUES(2 NULL 63)
INSERT INTO coalesce_example VALUES(3 NULL NULL) SAP HANA 数库– SQL 参考手册
77
SELECT id a b COALESCE (a b*11 500) coalesce FROM coalesce_example
1 1000 800 1000
2 NULL 630 6930000305175781
3 NULL NULL 500
CURRENT_CONNECTION
语法:
CURRENT_CONNECTION
描述:
返回前连接 ID
例子:
SELECT CURRENT_CONNECTION current connection FROM DUMMY
current connection
2
CURRENCT_SCHEMA
语法:
CURRENT_SCHEMA
描述:
返回前数集合名
例子:
SELECT CURRENT_SCHEMA current schema FROM DUMMY
current schema
SYSTEM
CURRENT_USER
语法:
CURRENT_USER SAP HANA 数库– SQL 参考手册
78
描述:
返回前语句文户名前授权堆栈顶部户名
例子:
example showing basic function operation using SYSTEM user
SELECT CURRENT_USER current user FROM DUMMY
current user
SYSTEM
definermode procedure declared by USER_A
CREATE PROCEDURE USER_APROC1 LANGUAGE SQLSCRIPT SQL SECURITY DEFINER AS
BEGIN
SELECT CURRENT_USER current user FROM DUMMY
END
USER_B executing USER_APROC1
CALL USER_APROC1
current user
USER_A
invokermode procedure declared by USER_A
CREATE PROCEDURE USER_APROC2 LANGUAGE SQLSCRIPT SQL SECURITY INVOKER AS
BEGIN
SELECT CURRENT_USER current user FROM DUMMY
END
USER_B is executing USER_APROC
CALL USER_APROC2
current user
USER_B
GROUPING_ID
语法:
GROUPING_ID(column_name_list)
描述: SAP HANA 数库– SQL 参考手册
79
GROUPING_ID 函数 GROUPING SETS 返回单结果集中级聚集GROUPING_ID 返回
整数识行组集合GROUPING_ID 列必须 GROUPING SETS 中元素
通生成位矢量 GROUPING SETS 转换十进制数位矢量视作二进制数分配
GROUPING_ID组成位矢量0 分配 GROUPING SETS 指定列否根 GROUPING
SETS 出现序分配 1通位矢量作二进制数处理该函数返回整型值作输出
例子:
SELECT customer year product SUM(sales)
GROUPING_ID(customer year product)
FROM guided_navi_tab
GROUP BY GROUPING SETS (
(customer year product)
(customer year)
(customer product)
(year product)
(customer)
(year)
(product))
CUSTOMER YEAR PRODUCT SUM(SALES) GROUPING_ID(CUSTOMERYEARPRODUCT)
1 C1 2009 P1 100 0
2 C1 2010 P1 50 0
3 C2 2009 P1 200 0
4 C2 2010 P1 100 0
5 C1 2009 P2 200 0
6 C1 2010 P2 150 0
7 C2 2009 P2 300 0
8 C2 2010 P2 150 0
9 C1 2009 a 300 1
10 C1 2010 a 200 1
11 C2 2009 a 500 1
12 C2 2010 a 250 1
13 C1 a P1 150 2
14 C2 a P1 300 2
15 C1 a P2 350 2
16 C2 a P2 450 2
17 a 2009 P1 300 4
18 a 2010 P1 150 4 SAP HANA 数库– SQL 参考手册
80
19 a 2009 P2 500 4
20 a 2010 P2 300 4
21 C1 a a 500 3
22 C2 a a 750 3
23 a 2009 a 800 5
24 a 2010 a 450 5
25 a a P1 450 6
26 a a P2 800 6
IFNULL
语法:
IFNULL (expression1 expression2)
描述:
返回输入中第 NULL 表达式
果 expression1 NULL返回 expression1
果 expression2 NULL返回 expression2
果输入表达式 NULL返回 NULL
例子:
SELECT IFNULL ('diff' 'same') ifnull FROM DUMMY
ifnull
diff
SELECT IFNULL (NULL 'same') ifnull FROM DUMMY
ifnull
same
SELECT IFNULL (NULL NULL) ifnull FROM DUMMY
ifnull
NULL
MAP
语法:
MAP (expression search1 result1 [ search2 result2] [ default_result]) SAP HANA 数库– SQL 参考手册
81
描述:
搜索集合中搜索 expression返回相应结果
果未找 expression 值定义 default_result MAP 返回 default_result
果未找 expression 值未定义 default_resultMAP 返回 NULL
注意:
搜索值相应结果总搜索结果方式提供
例子:
SELECT MAP(2 0 'Zero' 1 'One' 2 'Two' 3 'Three' 'Default') map FROM DUMMY
map
Two
SELECT MAP(99 0 'Zero' 1 'One' 2 'Two' 3 'Three' 'Default') map FROM DUMMY
map
Default
SELECT MAP(99 0 'Zero' 1 'One' 2 'Two' 3 'Three') map FROM DUMMY
map
NULL
NULLIF
语法:
NULLIF (expression1 expression2)
描述:
NULLIF 较两输入表达式值果第表达式等第二NULLIF 返回 NULL
果 expression1 等 expression2NULLIF 返回 expression1
果 expression2 NULLNULLIF 返回 expression1
例子: SAP HANA 数库– SQL 参考手册
82
SELECT NULLIF ('diff' 'same') nullif FROM DUMMY
nullif
diff
SELECT NULLIF('same' 'same') nullif FROM DUMMY
nullif
NULL
SESSION_CONTEXT
语法:
SESSION_CONTEXT(session_variable)
描述:
返回分配前户 session_variable 值
访问 session_variable 预定义者户定义预定义会话变量通客户端设置
'APPLICATION' 'APPLICATIONUSER''TRACEPROFILE'
会话变量定义者修改通命令 SET [SESSION]
[SESSION]
SESSION_CONTEXT 返回长度 512 字符 NVARCHAR 类型
例子:
读取会话变量:
SELECT SESSION_CONTEXT('APPLICATION') session context FROM DUMMY
session context
HDBStudio
SESSION_USER
语法:
SESSION_USER
描述: SAP HANA 数库– SQL 参考手册
83
返回前会话户名
例子:
example showing basic function operation using SYSTEM user
SELECT SESSION_USER session user FROM DUMMY
session user
SYSTEM
definermode procedure declared by USER_A
CREATE PROCEDURE USER_APROC1 LANGUAGE SQLSCRIPT SQL SECURITY DEFINER AS
BEGIN
SELECT SESSION_USER session user FROM DUMMY
END
USER_B is executing USER_APROC
CALL USER_APROC1
session user
USER_B
invokermode procedure declared by USER_A
CREATE PROCEDURE USER_APROC2 LANGUAGE SQLSCRIPT SQL SECURITY INVOKER AS
BEGIN
SELECT SESSION_USER session user FROM DUMMY
END
USER_B is executing USER_APROC
CALL USER_APROC2
session user
USER_B
SYSUUID
语法:
SYSUUID
描述:
返回 SAP HANA 连接实例 SYSUUID
例子: SAP HANA 数库– SQL 参考手册
84
SELECT SYSUUID FROM DUMMY
SYSUUID
4DE3CD576C79511BE10000000A3C2220
SAP HANA 数库– SQL 参考手册
85
SQL 语句
章描述 SAP HANA 数库支持 SQL 语句
Schema Definition and Manipulation Statements
Data Manipulation Statements
System Management Statements
Session Management Statements
Transaction Management Statements
Access Control Statements
Data Import Export Statements
集合定义操语句
ALTER AUDIT POLICY
语法:
ALTER AUDIT POLICY
语法元素:
改变审计策略名:
Audit_mode 启禁审计策略
ENABLE
启审计策略
DISABLE
禁审计策略
描述:
ALTER AUDIT POLICY 语句启禁审计策略
名
拥系统权限 AUDIT ADMIN 数库户允许改变审计策略拥该权限数库户
修改意审计策略否该户创建 SAP HANA 数库– SQL 参考手册
86
新建审计策略默认禁会发生审计必须启动该审计策略执行审计
审计策略视需禁启
配置参数:
审计配置参数存储文件 globalini审计配置部分:
global_auditing_state ( 'true' 'false' )
启动审计策略数量少审计会配置参数 global_auditing_state 设置 true 时启默
认值 false
default_audit_trail_type ( 'SYSLOGPROTOCOL' 'CSVTEXTFILE' )
指定存储审计结果
SYSLOGPROTOCOL:系统 syslog
CSVTEXTFILE:审计信息值逗号分隔存储文文件中
default_audit_trail_path
指定 CSVTEXTFILE 存储文件路径
果户拥需系统权限参数监控视图 M_INIFILE_CONTENTS 中选择显
示设置情况见
系统表监控视图:
AUDIT_POLICY:显示审计策略状态
M_INIFILE_CONTENTS:显示数库系统配置参数
拥系统权限 CATALOG READ DATA ADMIN INIFILE ADMIN 户查
M_INIFILE_CONTENTS 视图中容户空
例子:
该例子中需先利语句创建名 priv_audit 审计权限:
CREATE AUDIT POLICY priv_audit AUDITING SUCCESSFUL GRANT PRIVILEGE REVOKE PRIVILEGE GRANT
ROLE REVOKE ROLE LEVEL CRITICAL SAP HANA 数库– SQL 参考手册
87
现启审计策略:
ALTER AUDIT POLICY priv_audit ENABLE
禁该审计策略:
ALTER AUDIT POLICY priv_audit DISABLE
ALTER FULLTEXT INDEX
语法:
ALTER FULLTEXT INDEX
语法元素:
修改全文索引标识符:
定义全文索引参数者全文索引队列状态否应该修改者异步显式全文索引
见
修改全文索引参数列表:
| PHRASE INDEX RATIO
|
FUZZY SEARCH INDEX
模糊搜索索引
PHRASE INDEX RATIO
定义短语索引率
定义短语索引率百分值必须 00 10 间 SAP HANA 数库– SQL 参考手册
88
SYNC[HRONOUS]
改变全文索引步模式
ASYNC[HRONOUS]
改变全文索引异步模式
| AFTER
| EVERY
DOCUMENTS
异步索引时利 flush_queue_elem 定义更新全文索引时间
FLUSH
利正处理队列文件更新全文索引
SUSPEND
暂停全文索引处理队列
ACTIVATE
激活全文索引处理队列
描述:
该命令修改全文索引参数者索引处理队列状态队列激活全文索引
异步方式工作机制例插入操作阻塞直文件处理完
ALTER FULLTEXT INDEX
ALTER FULLTEXT INDEX
态
例子:
ALTER FULLTEXT INDEX i1 PHRASE INDEX RATIO 03 FUZZY SEARCH INDEX ON
述例子中全文索引’i1’短文索引率设 30启模糊搜索索引 SAP HANA 数库– SQL 参考手册
89
ALTER FULLTEXT INDEX i2 SUSPEND QUEUE
暂停全文索引’i2’队列
ALTER FULLTEXT INDEX i2 FLUSH QUEUE
利队列中已处理文件更新全文索引’i2’
ALTER INDEX
ALTER INDEX
语法元素:
定义重建索引名
描述:
ALTER INDEX 语句重建索引
例子:
例子重建索引 idx
ALTER INDEX idx REBUILD
ALTER SEQUENCE
语法:
ALTER SEQUENCE
[RESET BY
语法元素:
修改序列名
|
90
| MAXVALUE
| NO MAXVALUE
| MINVALUE
| NO MINVALUE
| CYCLE
| NO CYCLE
RESTART WITH
序列起始值果没指定 RESTART WITH 子句值前序列值
序列生成器提供第值 0 4611686018427387903 间整数
INCREMENT BY
序列增量值
利整数增加者减少序列值
MAXVALUE
定义序列生成值
正整数定义序列生成数值必须 0 4611686018427387903 间
NO MAXVALUE
NO MAXVALUE 指令递增序列值 4611686018427387903递减序列值
1
MINVALUE
定义序列生成值
正整数定义序列生成数值必须 0 4611686018427387903 间 SAP HANA 数库– SQL 参考手册
91
NO MINVALUE
NO MINVALUE 指令递增序列值 1递减序列值
4611686018427387903
CYCLE
CYCLE 指令序列达值值会重新开始
NO CYCLE
NO CYCLE 指令序列达值值会重新开始
系统重启期间系统动执行 RESET BY 语句 RESET BY 子查询确定值重启序列
关子查询详情请参阅 Subquery
描述:
ALTER SEQUENCE 语句修改序列生成器参数
例子:
面例子中序列 seq 起始序列值改 2
ALTER SEQUENCE seq RESTART WITH 2
面例子中序列 seq 值改 100没值
ALTER SEQUENCE seq MAXVALUE 100 NO MINVALUE
面例子中序列 seq 增量改 2限制no cycle
ALTER SEQUENCE seq INCREMENT BY 2 NO CYCLE
面例子中首先创建表 r列 a然序列 seq resetby 子查询修改列 a 包
含值
CREATE TABLE r (a INT)
ALTER SEQUENCE seq RESET BY SELECT MAX(a) FROM r
ALTER TABLE SAP HANA 数库– SQL 参考手册
92
语法:
ALTER TABLE
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
语法元素:
)
)
[
| NOT NULL
| UNIQUE [BTREE | CPBTREE]
| PRIMARY KEY [BTREE | CPBTREE]
93
SMALLDECIMAL | DECIMAL | REAL | DOUBLE| VARCHAR | NVARCHAR | ALPHANUM | SHORTTEXT |
VARBINARY | BLOB| CLOB | NCLOB | TEXT
CS_DECIMAL_FLOAT | CS_FIXED(ps s) | CS_SDFLOAT
| CS_STRING | CS_UNITEDECFLOAT | CS_DATE | CS_TIME
| CS_FIXEDSTRING | CS_RAW | CS_DAYDATE | CS_SECONDTIME | CS_LONGDATE | CS_SECONDDATE
| DDIC_CURR | DDIC_D16D | DDIC_D34D | DDIC_D16R | DDIC_D34R | DDIC_D16S | DDIC_D34S
| DDIC_DATS | DDIC_DAY | DDIC_DEC | DDIC_FLTP | DDIC_GUID
| DDIC_INT1 | DDIC_INT2 | DDIC_INT4 | DDIC_INT8 | DDIC_LANG | DDIC_LCHR | DDIC_MIN
|DDIC_MON| DDIC_LRAW | DDIC_NUMC | DDIC_PREC | DDIC_QUAN | DDIC_RAW
| DDIC_RSTR | DDIC_SEC | DDIC_SRST | DDIC_SSTR | DDIC_STRG | DDIC_STXT | DDIC_TIMS| DDIC_UNIT
| DDIC_UTCM | DDIC_UTCL | DDIC_UTCS | DDIC_TEXT | DDIC_VARC | DDIC_WEEK
DEFAULT
DEFAULT 定义 INSERT 语句没列提供值情况默认分配值
供数类型 DATE TIME SECONDDATE TIMESTAMP TINYINT SMALLINT INTEGER BIGINT
SMALLDECIMAL DECIMAL REAL DOUBLE VARCHAR NVARCHAR ALPHANUM SHORTTEXT VARBINARY
BLOB CLOB NCLOB and TEXT SAP HANA 数库– SQL 参考手册
94
供列存储数类型 CS_ALPHANUM CS_INT CS_FIXED CS_FLOAT
CS_DOUBLECS_DECIMAL_FLOAT CS_FIXED(pss) CS_SDFLOAT CS_STRING
CS_UNITEDECFLOATCS_DATE CS_TIMECS_FIXEDSTRING CS_RAW CS_DAYDATE CS_SECONDTIME
CS_LONGDATE and CS_SECONDDATE
供 DDIC 数类型 DDIC_ACCP DDIC_ALNM DDIC_CHAR DDIC_CDAY DDIC_CLNT
DDIC_CUKYDDIC_CURR DDIC_D16D DDIC_D34D DDIC_D16R DDIC_D34R DDIC_D16S DDIC_D34S
DDIC_DATSDDIC_DAY DDIC_DEC DDIC_FLTP DDIC_GUID DDIC_INT1 DDIC_INT2 DDIC_INT4
DDIC_INT8DDIC_LANG DDIC_LCHR DDIC_MIN DDIC_MON DDIC_LRAW DDIC_NUMC DDIC_PREC
DDIC_QUANDDIC_RAW DDIC_RSTR DDIC_SEC DDIC_SRST DDIC_SSTR DDIC_STRG
DDIC_STXTDDIC_TIMSDDIC_UNIT DDIC_UTCM DDIC_UTCL DDIC_UTCS DDIC_TEXT DDIC_VARC
DDIC_WEEK
GENERATED ALWAYS AS
指定运行时生成列值表达式
| NOT NULL
| UNIQUE [BTREE | CPBTREE]
| PRIMARY KEY [BTREE | CPBTREE]
NULL | NOT NULL
NOT NULL 禁止列值 NULL
果指定 NULL认常量表示列含空值默认 NULL
UNIQUE
指定唯键列
唯复合键指定列作唯键 unique 约束行列中具相
值
PRIMARY KEY
键约束 NOT NULL 约束 UNIQUE 约束组合禁止行列中具相值
BTREE | CPBTREE
指定索引类型列数类型字符串二进制字符串十进制数者约束组合键
非唯键默认索引类型 CPBTREE否 BTREE
B+树索引必须 BTREE 关键字 CPB+树索引需 CPBTREE 关键字
B+树维护排序数进行高效插入删搜索记录树 SAP HANA 数库– SQL 参考手册
95
CPB+树表示压缩前缀 B+树基 pkBtree 树CPB+树非常索引部分
键索引节点全部键部分更键CPB+树展现出 B+树更性
果省略索引类型SAP HANA 数库考虑列数类型选择合适索引
ALTER
增加列长度做列式存储中尝试修改列定义会返回错误数
库中没做检查错误发生选择列时数符合新定义数类型ALTER 未
遵数类型转换规
增加 NOT NULL 约束已存列允许果
表空者
表数时定义默认值