HANA SQL 常用函数分类

数据转换类函数:
| 函数名 | 说明 | 语法 |
| CAST | 转换类型 | CAST (expression AS data_type) |
| TO_ALPHANUM | 将给定的 value 转换为 ALPHANUM 数据类型。 | TO_ALPHANUM (value) |
| TO_BIGINT | 将 value 转换为 BIGINT 类型。 | TO_BIGINT (value) |
| TO_BINARY | 将 value 转换为 BINARY 类型。 | TO_BINARY (value) |
| TO_BLOB | 将 value 转换为 BLOB 类型。参数值必须是二进制字符串。 | TO_BLOB (value) |
| TO_CHAR | 将 value 转换为 CHAR 类型。如果省略 format 关键字,转换将会使用 Date Formats 中说明的日期格式模型。 | TO_CHAR (value [, format]) |
| TO_CLOB | 将 value 转换为 CLOB 类型。 | TO_CLOB (value) |
| TO_DATE | 将日期字符串 d 转换为 DATE 数据类型。如果省略 format 关键字,转换将会使用 Date Formats 中说明的日期格式模型。 | TO_DATE (d [, format]) |
| TO_DATS | 将字符串 d 转换为 ABAP 日期字符串,格式为”YYYYMMDD”。 | TO_DATS (d) |
| TO_DECIMAL | 将 value 转换为 DECIMAL 类型。 | TO_DECIMAL (value [, precision, scale]) |
| TO_DOUBLE | 将 value 转换为 DOUBLE(双精度)数据类型。 | TO_DOUBLE (value) |
| TO_INT | 将 value 转换为 INTEGER 类型。 | TO_INT (value) |
| TO_INTEGER | 将 value 转换为 INTEGER 类型。 | TO_INTEGER (value) |
| TO_NCHAR | 将 value 转换为 NCHAR Unicode 字符类型。如果省略 format 关键字,转换将会使用 Date Formats中说明的日期格式模型。 | TO_NCHAR (value [, format]) |
| TO_NCLOB | 将 value 转换为 NCLOB 数据类型。 | TO_NCLOB (value) |
| TO_NVARCHAR | 将 value 转换为 NVARCHAR Unicode 字符类型。如果省略 format 关键字,转换将会使用 DateFormats 中说明的日期格式模型。 | TO_NVARCHAR (value [,format]) |
| TO_REAL | 将 value 转换为实数(单精度)数据类型。 | TO_REAL (value) |
| TO_SECONDDATE | 将 value 转换为 SECONDDATE 类型。如果省略 format 关键字,转换将会使用 Date Formats 中说明的日期格式模型。 | TO_SECONDDATE (d [, format]) |
| TO_SMALLDECIMAL | 将 value 转换为 SMALLDECIMAL 类型。 | TO_SMALLDECIMAL (value) |
| TO_SMALLINT | 将 value 转换为 SMALLINT 类型。 | TO_SMALLINT (value) |
| TO_TIME | 将时间字符串 t 转换为 TIME 类型。如果省略 format 关键字,转换将会使用 Date Formats 中说明的日期格式模型。 | TO_TIME (t [, format]) |
| TO_TIMESTAMP | 将时间字符串 t 转换为 TIMESTAMP 类型。如果省略 format 关键字,转换将会使用 Date Formats中说明的日期格式模型。 | TO_TIMESTAMP (d [, format]) |
| TO_TINYINT | 将 value 转换为 TINYINT 类型。 | TO_TINYINT (value) |
| TO_VARCHAR | 将给定 value 转换为 VARCHAR 字符串类型。如果省略 format 关键字,转换将会使用 Date Formats中说明的日期格式模型。 | TO_VARCHAR (value [, format]) |
日期时间函数:
| 函数名 | 说明 | 语法 |
| ADD_DAYS | 计算日期 d 后 n 天的值。 | ADD_DAYS (d, n) |
| ADD_MONTHS | 计算日期 d 后 n 月的值。 | ADD_MONTHS (d, n) |
| ADD_SECONDS | 计算时间 t 后 n 秒的值。 | ADD_SECONDS (t, n) |
| ADD_YEARS | 计算日期 d 后 n 年的值。 | ADD_YEARS (d, n) |
| CURRENT_DATE | 返回当前本地系统日期。 | CURRENT_DATE |
| CURRENT_TIME | 返回当前本地系统时间。 | CURRENT_TIME |
| CURRENT_TIMESTAMP | 返回当前本地系统的时间戳信息。 | CURRENT_TIMESTAMP |
| CURRECT_UTCDATE | 返回当前 UTC 日期。 UTC 代表协调世界时,也被称为格林尼治标准时间( GMT)。 | CURRECT_UTCDATE |
| CURRENT_UTCTIME | 返回当前 UTC 时间。 | CURRENT_UTCTIME |
| CURRENT_UTCTIMESTAMP | 返回当前 UTC 时间戳。 | CURRENT_UTCTIMESTAMP |
| DAYNAME | 返回一周中日期 d 的英文名 | DAYNAME (d) |
| DAYOFMONTH | 返回一个月中日期 d 的整数数字(即一个月中的几号)。 | DAYOFMONTH (d) |
| DAYOFYEAR | 返回一年中代表日期 d 的整数数字(即一年中的第几天)。 | DAYOFYEAR (d) |
| DAYS_BETWEEN | 计算 d1 和 d2 之间的天数(只包括一端:[d1,d2)或者(d1,d2])。 | DAYS_BETWEEN (d1, d2) |
| EXTRACT | 返回日期 d 中指定的时间日期字段的值(年、月、日、时、分、秒)。 | EXTRACT ({YEAR | MONTH | DAY | HOUR | MINUTE | SECOND} FROM d) |
| HOUR | 返回时间 t 中表示小时的整数。 | HOUR (t) |
| ISOWEEK | 返回日期 d 的 ISO 年份和星期数。星期数前缀为字母 W。 | ISOWEEK (d) |
| LAST_DAY | 返回包含日期 d 的月的最后一天日期。 | LAST_DAY (d) |
| LOCALTOUTC | 将 timezone 下的本地时间 t 转换为 UTC 时间 | LOCALTOUTC (t, timezone) |
| MINUTE | 返回时间 t 中表示分钟的数字。 | MINUTE(t) |
| MONTH | 返回日期 d 所在月份的数字。 | MONTH(d) |
| MONTHNAME | 返回日期 d 所在月份的英文名。 | MONTHNAME(d) |
| NEXT_DAY | 返回日期 d 的第二天。 | NEXT_DAY (d) |
| NOW | 返回当前时间戳。 | NOW () |
| QUARTER | 返回日期 d 的年份,季度。第一季度由 start_month 定义的月份开始,如果没有定义start_month,第一季度假设为从一月开始。 | QUARTER (d, [, start_month ]) |
| SECOND | 返回时间 t 表示的秒数。 | SECOND (t) |
| SECONDS_BETWEEN | 计算日期参数 d1 和 d2 之间的秒数,语义上等同于 d2-d1。 | SECONDS_BETWEEN (d1, d2) |
| UTCTOLOCAL | 将 UTC 时间值转换为时区 timezone 下的本地时间。 | UTCTOLOCAL (t, timezone) |
| WEEK | 返回日期 d 所在星期的整数数字。 | WEEK (d) |
| WEEKDAY | 返回代表日期 d 所在星期的日期数字(星期几)。返回值范围为 0 至 6,表示 Monday(0)至 Sunday(6)。 | WEEKDAY (d) |
| YEAR | 返回日期 d 所在的年份数。 | YEAR (d) |
数字函数:
| 函数名 | 说明 | 语法 |
| ABS | 返回数字参数 n 的绝对值。 | ABS (n) |
| ACOS | 返回参数 n 的反余弦,以弧度为单位,值为-1 至 1。 | ACOS (n) |
| ASIN | 返回参数 n 的反正弦值,以弧度为单位,值为-1 至 1。 | ASIN (n) |
| ATAN | 返回参数 n 的反正切值,以弧度为单位, n 的范围为无限。 | ATAN (n) |
| ATAN2 | 返回两数 n 和 m 比率的反正切值,以弧度为单位。这和 ATAN(n/m)的结果一致。 | ATAN2 (n, m) |
| BINTOHEX | 将二进制值转换为十六进制。 | BINTOHEX (expression) |
| BITAND | 对参数 n 和 m 的位执行 AND 操作(即按位与)。 n 和 m 都必须是非负整数。 BITAND 函数返回 BIGINT 类型的结果。 | BITAND (n, m) |
| CEIL | 返回大于或者等于 n 的第一个整数(大小它的最小整数) | CEIL(n) |
| COS | 返回参数 n 的余弦值,以弧度为单位。 | COS (n) |
| COSH | 返回参数 n 的双曲余弦值。 | COSH (n) |
| COT | 计算参数 n 的余切值,其中 n 以弧度表示。 | COT (n) |
| EXP | 返回以 e 为底, n 为指数的计算结果。 | EXP (n) |
| FLOOR | 返回不大于参数 n 的最大整数。 | FLOOR (n) |
| GREATEST | 返回参数 n1,n2,…最大数。 | GREATEST (n1 [, n2]...) |
| HEXTOBIN | 将十六进制数转换为二进制数。 | HEXTOBIN (value) |
| LEAST | 返回参数 n1,n2,…最小数。 | LEAST (n1 [, n2]...) |
| LN | 返回参数 n 的自然对数。 | LN (n) |
| LOG | 返回以 b 为底, n 的自然对数值。底 b 必须是大于 1 的正数,且 n 必须是正数。 | LOG (b, n) |
| MOD | 返回 n 整除 b 的余数值。 | MOD (n, d) |
| POWER | 计算以 b 为底, e 为指数的值。 | POWER (b, e) |
| ROUND | 返回参数 n 小数点后 pos 位置的值(四舍五入)。 | ROUND (n [, pos]) |
| SIGN | 返回 n 的符号(正或负)。如果 n 为正,则返回 1; n 为负,返回-1, n 为 0 返回 0。 | SIGN (n) |
| SIN | 返回参数 n 的正弦值,以弧度为单位。 | SIN (n) |
| SINH | 返回 n 的双曲正弦值,以弧度为单位。 | SINH (n) |
| SQRT | 返回 n 的平方根。 | SQRT (n) |
| TAN | 返回 n 的正切值,以弧度为单位。 | TAN (n) |
| TANH | 返回 n 的双曲正切值,以弧度为单位。 | TANH (n) |
| UMINUS | 返回 n 的负值。 | UMINUS (n) |
字符串函数:
| 函数名 | 说明 | 语法 |
| ASCII | 返回字符串 c 中第一个字节的 ASCII 值。 | ASCII(c) |
| CHAR | 返回 ASCII 值为数字 n 的字符。 | CHAR (n) |
| CONCAT | 返回位于 str1 后的 str2 联合组成的字符串。级联操作符(||)与该函数作用相同。 | CONCAT (str1, str2) |
| LCASE | 将字符串 str 中所有字符转换为小写。 | LCASE(str) |
| LEFT | 返回字符串 str 开头 n 个字符/位的字符。 | LEFT (str, n) |
| LENGTH | 返回字符串 str 中的字符数。对于大对象(LOB)类型,该函数返回对象的字节长度。 | LENGTH(str) |
| LOCATE | 返回字符串 haystack 中子字符串 needle 所在的位置。如果未找到,则返回 0。 | LOCATE (haystack, needle) |
| LOWER | 将字符串 str 中所有字符转换为小写。 | LOWER (str) |
| LPAD | 从左边开始对字符串 str 使用空格进行填充,达到 n 指定的长度。如果指定了 pattern 参数,字符串 str 将按顺序填充直到满足 n 指定的长度。 | LPAD (str, n [, pattern]) |
| LTRIM | 返回字符串 str 截取所有前导空格后的值。如果定义了 remove_set, LTRIM 从起始位置移除字符串str 包含该集合中的字符,该过程持续至到达不在 remove_set 中的字符。 | LTRIM (str [, remove_set]) |
| NCHAR | 返回整数 n 表示的 Unicode 字符。 | NCHAR (n) |
| REPLACE | 字符串替换 | REPLACE (original_string, search_string, replace_string) |
| RIGHT | 返回字符串 str 中最右边的 n 字符/字节。 | RIGHT(str, n) |
| RPAD | 从尾部开始对字符串 str 使用空格进行填充,达到 n 指定的长度。如果指定了 pattern 参数,字符串 str 将按顺序填充直到满足 n 指定的长度。 | RPAD (str, n [, pattern]) |
| RTRIM | 返回字符串 str 截取所有后置空格后的值。如果定义了 remove_set, RTRIM 从尾部位置移除字符串 str 包含该集合中的字符,该过程持续至到达不在 remove_set 中的字符。 | RTRIM (str [,remove_set ]) |
| SUBSTR_AFTER |
返回 str 中位于 pattern 第一次出现位置后的子字符串。 如果 str 不包含 pattern 子字符串,则返回空字符串。 如果 pattern 为空字符串,则返回 str。 如果 str 或者 pattern 为 NULL,则返回 NULL。 |
SUBSTR_AFTER (str, pattern) |
| SUBSTR_BEFORE |
返回 str 中位于 pattern 第一次出现位置前的子字符串。 如果 str 不包含 pattern 子字符串,则返回空字符串。 如果 pattern 为空字符串,则返回 str。 如果 str 或者 pattern 为 NULL,则返回 NULL。 |
SUBSTR_BEFORE (str, pattern) |
| SUBSTRING |
返回字符串 str 从 start_position 开始的子字符串。 SUBSTRING 可以返回 start_position 起的剩余部分字符或者作为可选,返回由 string_length 参数设置的字符数。 如果 start_position 小于 0,则被视为 1。 如果 string_length 小于 1,则返回空字符串。 |
SUBSTRING (str, start_position [, string_length]) |
| TRIM |
返回移除前导和后置空格后的字符串 str。截断操作从起始(LEADING)、结尾(TRAILING)或者两端(BOTH)执行。 如果 str 或者 trim_char 为空,则返回 NULL。 如果没有指定可选项, TRIM 移除字符串 str 中两端的子字符串 trim_char。 如果没有指定 trim_char,则使用单个空格(就是去空格)。 |
TRIM ([[LEADING | TRAILING | BOTH] trim_char FROM] str ) |
| UCASE | 将字符串 str 中所有字符转换为大写。 | UCASE (str) |
| UNICODE | 返回字符串中首字母的 UnIcode 字符码数字;如果首字母不是有效编码,则返回 NULL。 | UNICODE(c) |
| UPPER | 将字符串 str 中所有字符转换为大写。 | UPPER (str) |


