KD研发提供的ksql函数说明文档不是很正确,这里将文档中所有的函数做一整理,示例也已经过了验证,如果有遗漏的或不正确的欢迎提出和指出,我将完善和改正,谢谢。
字符串函数:
1、CHAR
将 int ASCII 代码转换为字符的字符串函数。
语法
CHAR ( integer_expression )
参数
integer_expression
介于 0 和 255 之间的整数。如果整数表达式不在此范围内,将返回 NULL 值。
返回类型
CHAR(1)
示例
SELECT CHAR(65) from table
答案:A
2、LCASE
将大写字符数据转换为小写字符数据后返回字符表达式。
语法
LCASE ( character_expression )
参数
character_expression
是字符或二进制数据表达式。
character_expression 可以是常量和列。它必须是可以隐式转换成CHAR和VARCHR的数据类型。否则使用CONVERT显式转换character_expression。
返回类型
VARCHR
示例
SELECT LCASE ('HI WORLD') FROM
答案:hi world
3、LEFT
返回从字符串左边开始指定个数的字符。
语法
LEFT ( character_expression , integer_expression )
参数
character_expression
是字符或二进制数据表达式。
character_expression 可以是常量和列。它必须是可以隐式转换成CHAR和VARCHR的数据类型。否则使用CONVERT显式转换character_expression。
integer_expression
是正整数。如果 integer_expression 为负,则返回空字符串。
返回类型
VARCHAR
示例
SELECT LEFT('hi world!',2) FROM table
答案:hi
4、LENGTH
返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格
语法
LENGTH ( string_expression )
参数
string_expression
要计算的字符串表达式。
返回类型
INT
示例
SELECT LENGTH('How are you') FROM table
答案:11
5、LTRIM
删除起始空格后返回字符表达式。
语法
LTRIM ( character_expression )
参数
character_expression
是字符或二进制数据表达式。
character_expression 可以是常量和列。它必须是可以隐式转换成CHAR和VARCHR的数据类型。否则使用CONVERT显式转换character_expression。
返回类型
VARCHAR
示例
SELECT LTRIME(' hi world!') FROM table
答案:hi world!
6、RIGHT
返回字符串中从右边开始指定个数的 integer_expression 字符。
语法
RIGHT ( character_expression , integer_expression )
参数
character_expression
是字符或二进制数据表达式。
character_expression 可以是常量和列。它必须是可以隐式转换成CHAR和VARCHR的数据类型。否则使用CONVERT显式转换character_expression。
integer_expression
是正整数,开始返回字符串的起始位置。如果 integer_expression 为负,则根据目标数据库的环境返回相应的错误信息。
返回类型
VARCHAR
示例
SELECT RIGHT('hi world!',2) FROM table
答案:d!
7、RTRIM
截断所有尾随空格后返回一个字符串。
语法
RTRIM ( character_expression )
参数
character_expression
由字符数据组成的表达式。character_expression 可以是常量、也可以是字符或二进制数据的列。
返回类型
VARCHAR
示例
SELECT RTRIM('hi world! ') + 'abc' FROM table
答案:hi world!abc
8、UCASE
返回将小写字符数据转换为大写的字符表达式。
语法
UPPER ( character_expression )
参数
character_expression
由字符数据组成的表达式。character_expression 可以是常量、也可以是字符或二进制数据的列。
返回类型
VARCHAR
示例
SELECT UCASE('hi world!') from table
答案:HI WORLD!
9、SUBSTRING
返回字符CHAR,VARCHAR,NCHAR,NVARCHAR,CLOB,BLOB或具有其类型的结果表达式的一部分。
语法
SUBSTRING ( expression , start , length )
参数
expression
是字符串、字符串大对象, 列或包含列的表达式。不使用包含聚合函数的表达式。
Start
是一个整数,指定子串的开始位置。
Length
是一个整数,指定子串的长度(要返回的字符数或字节数)。
返回类型
返回字符数据。
示例
SELECT SUBSTRING('hi world!', 1 ,2) FROM table
答案:hi
10、CONCAT
返回连接两个字符型表达式的结果。
语法
CONCAT( expression1 , expression2 )
参数
expression1
是字符串、字符串大对象, 列或包含列的表达式。不要使用包含聚合函数的表达式。
expression2
是字符串、字符串大对象, 列或包含列的表达式。不要用包含聚合函数的表达式。
返回类型
字符数据
示例
SELECT CONCAT('hi ','world') FROM table
答案:hi world
11、REPLACE
返回在指定的字符串中用某一字符串替换特定字符串的结果。
语法
REPLACE( expression1 , expression2, expression3 )
参数
expression1
指定的字符串。
expression2
需要查找替换的字符串。
Expression3
替换为的字符串。
返回类型
字符数据
示例
SELECT REPLACE('hi world!','hi','hello') FROM table
答案:hello world!
12、CHARINDEX
返回指定的字符串中某一子字符串替换特定字符串的结果。
语法
CHARINDEX( expression1 , expression2 )
参数
expression1
指定的字符串。
expression2
需要查找替换的字符串。
Expression3
替换为的字符串。
返回类型
字符数据
示例
SELECT charindex('w','hi world!',0) from table
答案:4
时间函数:
1、CURDATE
返回现在日期,时分秒为00:00:00。
语法
CURDATE( )
参数
返回类型
DATETIME
示例
SELECT CURDATE( ) FROM table
答案:2009-08-17 00:00:00.0
2、CURTIME
返回现在时间,没有日期部分。
语法
CURTIME( )
参数
返回类型
DATETIME
示例
SELECT CURTIME() from table
答案:13:03:09
3、DAYOFMONTH
返回日期和时间戳月中的第几号。
语法
DAYOFMONTH ( expression )
参数
expression
日期常量,时间戳常量,具有DATETIME类型的列它们的任意组合运算的结果。
返回类型
INT
示例
SELECT curdate(),DAYOFMONTH(curdate()) from table
答案:2009-08-17 00:00:00.0; 17
4、DAYOFWEEK
返回日期和时间戳的一周星期几,注意周日为第一天。
语法
DAYOFWEEK( expression )
参数
expression
日期常量,时间戳常量,具有DATETIME类型的列及它们的任意组合运算的结果。
返回类型
INT
示例
SELECT curdate(),DAYOFWEEK(curdate()) FROM table
答案:2009-08-17 00:00:00.0;2 (周二)
5、DAYOFYEAR
返回日期和时间戳在一年中的天数位置。
语法
DAYOFYEAR( expression )
参数
expression
日期常量,时间戳常量,具有DATETIME类型的列及它们的任意组合运算的结果。
返回类型
INT
示例
SELECT curdate(),DAYOFYEAR(curdate()) FROM table
答案:2009-08-17 00:00:00.0;229
6、NOW
返回现在时间(时间戳)。
语法
NOW( )
参数
返回类型
DATETIME
示例
SELECT NOW() FROM table
答案:2009-08-17 13:10:54.483
7、HOUR
返回时间或时间戳中的小时部分。
语法
HOUR( expression )
参数
expression
时间常量,时间戳常量,具有DATETIME类型的列及它们的任意组合运算的结果。
返回类型
INT
示例
SELECT HOUR( NOW()) FROM table
8、HOUR
返回时间或时间戳中的小时部分。
语法
HOUR( expression )
参数
expression
时间常量,时间戳常量,具有DATETIME类型的列及它们的任意组合运算的结果。
返回类型
INT
示例
SELECT now(),hour(now()) from table
答案:2009-08-17 13:13:13.78;13
9、MINUTE
返回时间或时间戳中的分钟部分。
语法
MINUTE( expression )
参数
expression
时间常量,时间戳常量,具有DATETIME类型的列及它们的任意组合运算的结果。
返回类型
INT
示例
SELECT now(),MINUTE(NOW()) FROM table
答案:2009-08-17 13:15:34.543; 15
10、QUARTER
返回日期和时间戳的季度号。
语法
QUARTER( expression )
参数
expression
日期常量,时间戳常量,具有DATETIME类型的列及它们的任意组合运算的结果。
返回类型
INT
示例
SELECT NOW(),QUARTER(NOW()) FROM table
答案:2009-08-17 13:16:27.013; 3
11、SECOND
返回时间和时间戳的秒部分。
语法
SECOND( expression )
参数
expression
时间常量,时间戳常量,具有DATETIME类型的列及它们的任意组合运算的结果。
返回类型
INT
示例
SELECT NOW(),SECOND(NOW()) FROM table
答案:2009-08-17 13:18:06.217;6
12、WEEK
返回日期和时间戳在一年的第几周。
语法
WEEK( expression )
参数
expression
日期常量,时间戳常量,具有DATETIME类型的列及它们的任意组合运算的结果。
返回类型
INT
示例
SELECT NOW(),WEEK(NOW()) FROM table
答案:2009-08-17 13:19:45.577;34
13、YEAR
返回日期和时间戳的年部分。
语法
YEAR( expression )
参数
expression
日期常量,时间戳常量,具有DATETIME类型的列及它们的任意组合运算的结果。
返回类型
INT
示例
SELECT NOW(),YEAR(NOW()) FROM table
答案:2009-08-17 13:21:07.827 ;2009
14、DAYNAME
返回时间和时间戳在一周中名字。
语法
DAYNAME( espression )
参数
espression
时间常量,时间戳常量,具有DATETIME类型的列及它们的任意组合运算的结果。
返回类型
VARCHAR
示例
SELECT now(),DAYNAME(NOW()) FROM table
答案:2009-08-17 13:22:04.873 ;星期一
15、MONTHNAME
返回日期和时间戳的月份名字。
语法
MONTHNAME( expression )
参数
expressi常量on
日期,时间戳常量,具有DATETIME类型的列及它们的任意组合运算的结果。
返回类型
VARCHAR
示例
SELECT NOW(),MONTHNAME(NOW()) FROM table
答案:2009-08-17 13:23:32.17;08
16、CONVERT
返回字符串到DATETIME的转换值
语法
CONVERT( DATETIME , expression )
参数
expression
时间常量,日期常量,时间戳常量,具有DATETIME类型的列及它们任意组合运算的结果
返回类型
DATETIME
示例
SELECT CONVERT(datetime, '2002-07-17 16:09:53') FROM table
答案:2002-07-17 16:09:53.0(Datetime型)
17、DATEADD
返回指定的DATETIME之后若干时间后的另一个DATETIME类型的数值
语法
DATEADD(datepart,number,date)
参数
datepart
是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft? SQL Server? 识别的日期部分和缩写。
日期部分 缩写
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
number
是用来增加 datepart 的值。如果指定一个不是整数的值,则将废弃此值的小数部分。例如,如果为 datepart 指定 day,为 number 指定 1.75,则 date 将增加 1。
date
是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。有关指定日期的更多信息,请参见 datetime 和 smalldatetime。
返回类型
DATETIME
示例
SELECT DATEADD(day,2,'2009-08-17') FROM table
答案:2009-08-19(日期型)
18、DATEDIFF
返回跨两个指定日期的日期和时间边界数。
语法
DATEDIFF ( datepart , startdate , enddate )
datepart
是规定了应在日期的哪一部分计算差额的参数。
日期部分 缩写
year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
startdate
是计算的开始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。
因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。
如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。
enddate
是计算的终止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式
返回类型
INT
用法
此函数计算两个指定日期之间日期部分的数目。结果为日期部分中等于(date2 - date1)的有符号的整数值。
当结果不是日期部分的偶数倍时,DATEDIFF 将被截断而不是被舍入。
当使用 day 作为日期部分时,DATEDIFF 返回两个指定的时间之间(包括第二个日期但不包括第一个日期)的午夜数。
当使用 month 作为日期部分时,DATEDIFF 返回两个日期之间(包括第二个日期但不包括第一个日期)出现的月的第一天的数目。
当使用 week 作为日期部分时,DATEDIFF 返回两个日期(包括第二个日期但不包括第一个日期)之间星期日的数目。
对于更小的时间单位存在溢出值:
milliseconds 24 天
seconds 68 年
minutes 4083 年 others 没有溢出限制
如果超出这些限制,此函数将返回溢出错误。
示例
select datediff( hour, '4:00am', '5:30am' ) from table
答案:1
select datediff(month, '2009-01-01','2009-03-02') from table
答案:2
19、TO_DATE
返回字符串到DATETIME的转换值
语法
TO_DATE(expression )
参数
expression
日期格式的字符常量
返回类型
DATETIME
示例
SELECT to_date('2002-07-17 16:09:53') FROM table
答案:2002-07-17 16:09:53.0(Datetime型)
SELECT to_date('2009-01-01') FROM table
答案:2009-01-01 00:00:00.0(Datetime型)
数值函数:
1、ABS
返回给定数字表达式的绝对值。
语法
ABS ( numeric_expression )
参数
numeric_expression
精确数字或近似数字数据类型类别的表达式
返回类型
返回与 numeric_expression 相同的类型。
示例:
SELECT ABS(-1.0), abs(Flocalamount) from t_gl_voucherentry
2、CELLING
返回大于或等于所给数字表达式的最小整数。
语法
CEILING ( numeric_expression )
参数
numeric_expression
是精确数字或近似数字数据类型类别的表达式
返回类型
返回与 numeric_expression 相同的类型。
示例
SELECT CEILING(123.45), CEILING(-123.45), CEILING(0.0)
答案为:124;123;0
3、COS
一个数学函数,返回给定表达式中给定角度(以弧度为单位)的三角余弦值。
语法
COS ( float_expression )
参数
float_expression
是DECIMAL类型得expression
返回类型
DECIMAL
示例
SELECT COS(3.14/2) FROM Test
4、EXP
返回所给的 float 表达式的指数值。
语法
EXP ( float_expression )
参数
float_expression
是 DECIMAL类型的表达式。
返回类型
DECIMAL
示例
SELECT exp(1) FROM table
5、FLOOR
返回小于或等于所给数字表达式的最大整数。
语法
FLOOR ( numeric_expression )
参数
numeric_expression
精确数字或近似数字数据类型类别的表达式
返回类型
返回与 numeric_expression 相同的类型.
示例
SELECT FLOOR(123,45), FLOOR(-123.45) FROM table
答案为:123;124
6、LOG
返回给定 float 表达式的自然对数(以e为底)。
语法
LOG ( float_expression )
参数
float_expression
是DECIMAL数据数据类型的表达式
返回类型
DECIMAL
示例
SELECT LOG(2.718281828459) FROM table
答案:约等于1
7、PI
返回PI的值。
KSQL无此函数
8、SIGN
返回给定表达式的正 (+1)、零 (0) 或负 (-1) 号。
语法
SIGN ( numeric_expression )
参数
numeric_expression
精确数字或近似数字数据类型类别的表达式
返回类型
DECIMAL
示例
SELECT SIGN(1.57),sign(-10) from table
答案:1.00; -1
9、SIN
以近似数字 (float) 表达式返回给定角度(以弧度为单位)的三角正弦值。
语法
SIN ( float_expression )
参数
float_expression
是DECIMAL类型得表达式。
返回类型
DECIMAL
示例:
SELECT SIN(1.57) ,SIN(0) from table
答案:0.9999996829318346; 0.0
10、SQRT
返回给定表达式的平方根。
语法
SQRT ( float_expression )
参数
float_expression
是 DECIMAL类型的表达式。
返回类型
DECIMAL
示例
SELECT SQRT(4) FROM table
答案:2
11、TAN
返回输入表达式的正切值。
语法
TAN ( float_expression )
参数
float_expression
返回类型
float 或 real 类型的表达式,解释为弧度数。
示例
SELECT TAN(3.1415926/4) FROM table
12、LOG10
返回给定 float 表达式的以 10 为底的对数。
语法
LOG10 ( float_expression )
参数
float_expression
是 DECIMAL类型的表达式。
返回类型
DECIMAL
示例
SELECT log10(10) FROM table
答案:1
13、ROUND
返回数字表达式并四舍五入为指定的长度或精度.
语法
ROUND ( numeric_expression , length )
参数
numeric_expression
精确数字或近似数字数据类型类别的表达式
length
是 numeric_expression 将要四舍五入的精度。length 必须是INT(INTEGER). 当 length 为正数时,numeric_expression 四舍五入为 length 所指定的小数位数。当 length 为负数时,numeric_expression 则按 length 所指定的在小数点的左边四舍五入。
返回类型
返回与 numeric_expression 相同的类型。
注释
ROUND 始终返回一个值。如果 length 是负数且大于小数点前的数字个数,ROUND 将返回 0。
示例 结果
ROUND(748.58, -4) 0
示例
SELECT ROUND(123.1235, 2), ROUND(123.1235, 3) FROM FROM table
答案:123.12;123.124
14、MOD
返回两个整型数值相除得余数。
语法
MOD( int_expression , int_expression )
参数
int_expression
整型数据类型类别得表达式。
返回类型
INT
示例
SELECT mod(11,2) FROM
答案:1
15、NULLIF
如果两个指定的表达式相等,则返回空。
语法
NULLIF ( expression , expression )
参数
expression
常量、列名、函数、子查询或算术运算符的任意组合。
返回类型
返回类型与第一个 expression 相同。
如果两个表达式不相等,NULLIF 返回第一个 expression 的值。如果相等,NULLIF 返回第一个 expression 类型的空值。
示例
select NULLIF(1,1),NULLIF(1,2) from table
答案: 空;1
16、ISNULL
如果第一个表达式的值为空,则返回第二个表达式的值,否则,返回第一个表达式的值。
语法
ISNULL ( expression , expression )
参数
expression
常量、列名、函数、子查询或算术运算符的任意组合。
返回类型
返回类型与第一个 expression 相同。
如果第一个表达式的值为空,ISNULL 返回第二个 expression 的值。否则,ISNULL 返回第一个 expression 类型的值。
示例
SELECT ISNULL( FMoney , 0) AS FMoney FROM table
17、ASCII
返回字符表达式最左端字符的 ASCII 代码值。
语法
ASCII ( character_expression )
参数
character_expression
是类型为 char 或 varchar的表达式。
返回类型
INT
示例
select ASCII('A') FROM TABLE
答案:65