每个数据库为了使用者的查询简便性以及使用效率,都有专门提供一些函数给使用者进行使用,H2也同样如此,虽然没有oracle那么多强大的函数,但是一般需求的使用还是能够满足,下面就简单介绍下都有哪些函数

一、函数的分类以及名称

1、聚合函数(Aggregate Functions)AVGBOOL_ANDBOOL_ORCOUNTGROUP_CONCATMAXMINSUMSELECTIVITYSTDDEV_POPSTDDEV_SAMPVAR_POPVAR_SAMP2、数值函数(Numeric Functions)ABSACOSASINATANCOSCOTSINTANATAN2BITANDBITORBITXORMODCEILINGDEGREESEXPFLOORLOGLOG10RADIANSSQRTPIPOWERRANDRANDOM_UUIDROUNDROUNDMAGICSECURE_RANDSIGNENCRYPTDECRYPTHASHTRUNCATECOMPRESSEXPANDZERO3、字符串函数(String Functions)ASCIIBIT_LENGTHLENGTHOCTET_LENGTHCHARCONCATDIFFERENCEHEXTORAWRAWTOHEXINSTRINSERT FunctionLOWERUPPERLEFTRIGHTLOCATEPOSITIONLPADRPADLTRIMRTRIMTRIMREGEXP_REPLACEREPEATREPLACESOUNDEXSPACESTRINGDECODESTRINGENCODESTRINGTOUTF8SUBSTRINGUTF8TOSTRINGXMLATTRXMLNODEXMLCOMMENTXMLCDATAXMLSTARTDOCXMLTEXT4、日期和时间函数(Time and Date Functions)CURRENT_DATECURRENT_TIMECURRENT_TIMESTAMPDATEADDDATEDIFFDAYNAMEDAY_OF_MONTHDAY_OF_WEEKDAY_OF_YEAREXTRACTFORMATDATETIMEHOURMINUTEMONTHMONTHNAMEPARSEDATETIMEQUARTERSECONDWEEKYEAR5、系统函数(System Functions)ARRAY_GETARRAY_LENGTHAUTOCOMMITCANCEL_SESSIONCASEWHEN   FunctionCASTCOALESCECONVERTCURRVALCSVREADCSVWRITEDATABASEDATABASE_PATHFILE_READGREATESTIDENTITYIFNULLLEASTLOCK_MODELOCK_TIMEOUTLINK_SCHEMAMEMORY_FREEMEMORY_USEDNEXTVALNULLIFREADONLYROWNUMSCHEMASCOPE_IDENTITYSESSION_IDSETTABLETRANSACTION_IDUSER

二、函数的使用以及说明

AVG ( [ DISTINCT ] { int | long | decimal | double } )平均值。如果没有查询到行,结果集为NULL。聚合方法只能在SELECT语句中使用,返回的值的数据类型与输入参数(字段)类型一致。例子如下:AVG(X)BOOL_AND(boolean)如果表达式为真返回TRUE,如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。例子如下:BOOL_AND(ID>10)BOOL_OR(boolean)如果表达式为真返回TRUE,如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。例子如下:BOOL_OR(NAME LIKE ‘W%‘)COUNT( { * | { [ DISTINCT ] expression } } )统计所有的行数,或者非空值。方法返回一个长整数,如果没有查询到行,返回结果为0。聚合函数只能在SELECT语句中使用。例子如下:COUNT(*)GROUP_CONCATGROUP_CONCAT ( [ DISTINCT ] string[ ORDER BY { expression [ ASC | DESC ] } [,...] ]
[ SEPARATOR expression ] )以分割字符串进行连接。默认的分隔符是一个‘,‘(不带空格),此方法返回一个字符串,如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。例子如下:GROUP_CONCAT(NAME ORDER BY ID SEPARATOR ‘, ‘)MAX(value)取最大值。 如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。 返回的值的数据类型与输入参数(字段)类型一致。例子如下:MAX(NAME)MIN(value)取最小值。如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。 返回的值的数据类型与输入参数(字段)类型一致。例子如下:MIN(NAME)SUM( [ DISTINCT ] { int | long | decimal | double } )所有值求和。如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。 返回的值的数据类型与输入参数(字段)类型一致。例子如下:SUM(X)SELECTIVITY(value)估算性能优化选择(0-100)。这个值被定义为(100 * distinctCount / rowCount)。设置为了0的优化选择为0(未知) 。10000 以内的值都被保存在内存中。聚合函数只能在SELECT语句中使用。例子如下:SELECT SELECTIVITY(FIRSTNAME), SELECTIVITY(NAME) FROM TEST WHERE ROWNUM()<20000STDDEV_POP( [ DISTINCT ] double )总体标准差。此方法返回一个双精度实数。如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。例子如下:STDDEV_POP(X)STDDEV_SAMP( [ DISTINCT ] double )样本标准差。此方法返回一个双精度实数。如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。例子如下:STDDEV(X)VAR_POPVAR_POP( [ DISTINCT ] double )总体方差(总体标准方差)。 此方法返回一个双精度实数。如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。例子如下:VAR_POP(X)VAR_SAMP( [ DISTINCT ] double )样本方差(样本标准方差)。如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。例子如下:VAR_SAMP(X)ABS ( { int | long | decimal | double } )参见JAVA的 Math.abs方法。需要注意的是 Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE 和 Math.abs(Long.MIN_VALUE) == Long.MIN_VALUE。返回值的类型和输入参数的类型相同。例子如下:ABS(ID)ACOS(double)参见JAVA的Math.acos方法。这个方法返回一个双精度实数。例子如下:ACOS(D)ASIN(double)参见JAVA的Math.asin方法。这个方法返回一个双精度实数。例子如下:ASIN(D)ATAN(double)参见JAVA的Math.atan方法。这个方法返回个双精度实数。例子如下:ATAN(D)COS(double)参见JAVA的Math.cos方法。这个方法返回个双精度实数。例子如下:COS(ANGLE)COT(double)参见JAVA的方法Math.cot。这个方法返回个双精度实数。例子如下:COT(ANGLE)SIN(double)参见JAVA方法Math.sin。这个方法返回个双精度实数。例子如下:SIN(ANGLE)TAN(double)参见JAVA方法Math.tan。这个方法返回个双精度实数。例子如下:TAN(ANGLE)ATAN2(double, double)
参见JAVA方法Math.atan2。这个方法返回个双精度实数。例子如下:ATAN2(X, Y)BITAND(long, long)
位的与运算。这个方法返回一个长整数,参见JAVA操作 &。例子如下:BITAND(A, B)BITOR(long, long)
位的或运算。这个方法返回一个长整数,参见JAVA操作 |。例子如下:BITOR(A, B)BITXOR(long, long)
位的异或运算。这个方法返回一个长整数,参见JAVA操作 ^。例子如下:BITXOR(A, B)MOD(long, long)
取余数操作,这个方法返回一个长整数,参见JAVA操作 %。例子如下:MOD(A, B)CEILING(double)
参见JAVA方法 Math.ceil。 这个方法返回个双精度实数。例子如下:LOG(A)DEGREES(double)
参见JAVA方法Math.toDegrees。这个方法返回个双精度实数。例子如下:DEGREES(A)EXPEXP(double)
参见JAVA方法 Math.exp。这个方法返回个双精度实数。例子如下:EXP(A)FLOOR(double)
参见JAVA方法 Math.floor。这个方法返回个双精度实数。例子如下:FLOOR(A)LOG(double)
参见JAVA方法 Math.log。这个方法返回个双精度实数。例子如下:LOG(A)LOG10(double)
参见JAVA方法 Math.log10 (在Java 5中)。这个方法返回个双精度实数。例子如下:LOG10(A)RADIANS(double)
参见JAVA方法 Math.toRadians。这个方法返回个双精度实数。例子如下:RADIANS(A)SQRT(double)
参见JAVA方法 Math.sqrt。这个方法返回个双精度实数。例子如下:SQRT(A)PIPI()
参见JAVA值 Math.PI。这个方法返回个双精度实数。例子如下:PI()POWER(double, double)
参见JAVA方法 Math.pow。这个方法返回个双精度实数。例子如下:POWER(A, B)RAND( [ int ] )
调用无参的方法返回下一个未指定的随机数。调用带这个SESSION的种子参数的随机数生成器。这个方法返回一个双精度实数。例子如下:RAND()RANDOM_UUID
返回一个新的122位未指定随机数的UUID。例子如下:RANDOM_UUID()ROUND(double, digitsInt)
四舍五入一个数值,方法返回一个双精度的实数。例子如下:ROUND(VALUE, 2)ROUNDMAGIC(double)
更好的四舍五入方法,但是要慢,它在处理约0时有特殊的方法。仅小于等于+/-1000000000000 的数被支持。数值将被在内部转换为一个字符串,然后最后的四个字符被检查,‘000x‘变成‘0000‘,‘999x‘变成 ‘999999‘,四舍五入是自动完成的,方法返回一个双精度的实数。例子如下:ROUNDMAGIC(VALUE/3*3)SECURE_RAND(int)
生产加密安全的随机数,方法返回字节串。例子如下:CALL SECURE_RAND(16)SIGN ( { int | long | decimal | double } )
如果值小于0返回-1,如果值为0返回0,其他返回1。例子如下:SIGN(VALUE)ENCRYPT(algorithmString, keyBytes, dataBytes)
使用密钥加密数据。支持算法 XTEA 和 AES。每块的大小为16字节,这个方法返回字节串。例子如下:CALL ENCRYPT(‘AES‘, ‘00‘, STRINGTOUTF8(‘Test‘))DECRYPT(algorithmString, keyBytes, dataBytes)
使用密码解密。支持算法 XTEA 和 AES。每块的大小为16字节,这个方法返回字节串。例子如下:CALL TRIM(CHAR(0) FROM UTF8TOSTRING(DECRYPT(‘AES‘, ‘00‘, ‘3fabb4de8f1ee2e97d7793bab2db1116‘)))HASH(algorithmString, dataBytes, iterationInt)
使用一个算法计算一个HASH值,通过一定次数的使用算法迭代计算来获得HASH值。目前仅有 SHA256被支持。这个方法返回字节串。例子如下:CALL HASH(‘SHA256‘, STRINGTOUTF8(‘Password‘), 1000)TRUNCATE(double, digitsInt)
截断数值(多余的位数直接截断为0)。这个方法返回一个双精度的实数。例子如下:TRUNCATE(VALUE, 2)COMPRESS(dataBytes [, algorithmString])
使用指定的压缩算法压缩数据。目前支持的算法有: LZF (更快但是压缩率更低,缺省的压缩算法), DEFLATE (更高的压缩率)。压缩并不总能减少尺寸,非常小的对象和竟凑对象可能会变得更大。这个方法返回字节串。例子如下:COMPRESS(STRINGTOUTF8(‘Test‘))EXPAND(bytes)
解压被COMPRESS 方法压缩的数据。这个方法返回字节串。例子如下:UTF8TOSTRING(EXPAND(COMPRESS(STRINGTOUTF8(‘Test‘))))ZERO()
返回值0,这个方法能被用,即使在数字文本被禁用的情况下。例子如下:ZERO()ASCII(string)
返回字符串第一个字符的ASCII值。这个方法返回一个整数。例子如下:ASCII(‘Hi‘)BIT_LENGTH(string)
返回串的位长度。这个方法返回一个长整数。像BLOB, CLOB, BYTES 和 JAVA_OBJECT, 都可以使用这个方法。每个字符需要16个BIT位。例子如下:BIT_LENGTH(NAME)LENGTH{ LENGTH | CHAR_LENGTH | CHARACTER_LENGTH } ( string )
返回串中的字符数量。这个方法返回一个长整数。像 BLOB, CLOB, BYTES 和 JAVA_OBJECT, 都可以使用这个方法。例子如下:LENGTH(NAME)OCTET_LENGTH(string)
返回串中的字节数。这个方法返回一个长整数。像BLOB, CLOB, BYTES 和 JAVA_OBJECT, 都可以使用这个方法。每个字符需要2个字节。例子如下:OCTET_LENGTH(NAME)CHAR{ CHAR | CHR } ( int )
转换ASCII值为字符。这个方法返回一个字符串。例子如下:CHAR(65)CONCAT(string, string [,...])
合并字符串。这个方法返回一个字符串。例子如下:CONCAT(NAME, ‘!‘)DIFFERENCE(string, string)
返回两个字符串的读音差别。这个方法返回一个整数。例子如下:DIFFERENCE(T1.NAME, T2.NAME)HEXTORAW(string)
转换16进制字符串为普通字符串,4个16进制字符转换一个字符。例子如下:HEXTORAW(DATA)RAWTOHEX(string)
转换普通字符串为16进制字符串。一个字符转换为4个16进制字符。这个方法返回一个字符串。例子如下:RAWTOHEX(DATA)INSTR(string, searchString, [, startInt])
查找子串在字符串中的位置。如果一个开始位置被指定,这个位置之前的字符将被忽略,如果指定的开始位置为负数,从右数到开始位置的字符将被忽略。如果子串在字符串中未找到,返回0。例子如下:INSTR(EMAIL,‘@‘)INSERT FunctionINSERT(originalString, startInt, lengthInt, addString)
插入一个附加的字符串到指定串的指定位置。lengthInt指定在原串中从startInt指定的位置删除的字符数。这个方法返回一个字符串。例子如下:INSERT(NAME, 1, 1, ‘ ‘)LOWER{ LOWER | LCASE } ( string )
转换一个字符串为小写。例子如下:LOWER(NAME)UPPER{ UPPER | UCASE } ( string )
转换一个字符串为大写。例子如下:UPPER(NAME) LEFT(string, int)
返回左边的子字符串。例子如下:LEFT(NAME, 3)RIGHT(string, int)
返回右边的子字符串。例子如下:RIGHT(NAME, 3)LOCATE(searchString, string [, startInt])
返回子串在字符串中的位置。如果一个开始位置被指定,这个位置之前的字符将被忽略,如果指定的开始位置为负数,从右数到开始位置的字符将被忽略。如果子串在字符串中未找到,返回0。例子如下:LOCATE(‘.‘, NAME)POSITION(searchString, string)
返回子串在字符串中的位置。参考 LOCATE。例子如下:POSITION(‘.‘, NAME)LPAD(string, int[, paddingString])
左填充指定长度的字符串。如果指定的长度比字符串的实际长度要短,将把字符串从尾部进行截断。如果填充字符串未指定,空格将被填充。例子如下:LPAD(AMOUNT, 10, ‘*‘)RPAD(string, int[, paddingString])
右填充指定长度的字符串。如果指定的长度比字符串的实际长度短,将把字符串截断。如果填充字符串未指定,空格将被填充。例子如下:RPAD(TEXT, 10, ‘-‘)LTRIM(string)
从字符串中移走所有的前导空格。例子如下:LTRIM(NAME)RTRIM(string)
从字符串中移走所有的尾部空格。例子如下:RTRIM(NAME)TRIM ( [ { LEADING | TRAILING | BOTH } [ string ] FROM ] string )
移走字符串前导和尾部两端的全部空格。其他字符也可以通过指定被移走。例子如下:TRIM(BOTH ‘_‘ FROM NAME)REGEXP_REPLACE(inputString, regexString, replacementString)
使用正则表达式进行字符串替换。关于更多细节,请参看JAVA方法 String.replaceAll()。例子如下:REGEXP_REPLACE(‘Hello    World‘, ‘ +‘, ‘ ‘)REPEAT(string, int)
返回字符串中循环的次数。例子如下:REPEAT(NAME || ‘ ‘, 10)REPLACE(string, searchString [, replacementString])
使用另一个字符串替换文本中所有的搜索到的串。如果没有替换字符串被指定,搜索到的字符串将从原串中删除。例子如下:REPLACE(NAME, ‘ ‘)SOUNDEX(string)
返回代表字符串读音的四个字符代码。参见 http://www.archives.gov/genealogy/census/soundex.html 。这个方法返回一个字符串。例子如下:SOUNDEX(NAME)SPACE(int)
返回组成字符串的空格数。例子如下:SPACE(80)STRINGDECODE(string)
使用JAVA文本格式符解码字符串。特定的字符包括 \b, \t, \n, \f, \r, \", \\, \<octal>, \u<unicode>。这个方法返回一个字符串。例子如下:CALL STRINGENCODE(STRINGDECODE(‘Lines 1\nLine 2‘))STRINGENCODE(string)
使用JAVA文本格式符编码字符串。特定的字符包括 \b, \t, \n, \f, \r, \", \\, \<octal>, \u<unicode>。这个方法返回一个字符串。例子如下:CALL STRINGENCODE(STRINGDECODE(‘Lines 1\nLine 2‘))STRINGTOUTF8(string)
转换字符串为UTF8编码格式的字节数组。这个方法返回字节串。例子如下:CALL UTF8TOSTRING(STRINGTOUTF8(‘This is a test‘))SUBSTRING{ SUBSTRING | SUBSTR } ( string, startInt [, lengthInt ] )
提取指定起始位置的子串。长度是可选的,也支持:SUBSTRING(string FROM start [FOR length]).例子如下:SUBSTR(NAME, 1)UTF8TOSTRING(bytes)
将UTF8格式的字节数组解码为字符串。例子如下:CALL UTF8TOSTRING(STRINGTOUTF8(‘This is a test‘))XMLATTR(nameString, valueString)
创建XML属性元素,形式为 name="value"。value被编码为XML文本。这个方法返回字符串。例子如下:CALL XMLNODE(‘a‘, XMLATTR(‘href‘, ‘http://h2database.com‘))XMLNODE(elementString [, attributesString [, contentString]])
创建一个XML节点元素,这个方法返回一个字符串。例子如下:CALL XMLNODE(‘a‘, XMLATTR(‘href‘, ‘http://h2database.com‘), ‘H2‘)XMLCOMMENT(commentString)
创建一个XML注释。两个破折号(--)被转换为 - -。这个方法返回字符串。例子如下:CALL XMLCOMMENT(‘Test‘)XMLCDATA(valueString)
创建一个XML的CDATA 元素。如果值内容包含 ‘]]>‘,一个XML文本元素将被替代创建。这个方法返回一个字符串。例子如下:CALL XMLCDATA(‘data‘)XMLSTARTDOC()
字符串 ‘<?xml version="1.0"?>‘ 将被返回。例子如下:CALL XMLSTARTDOC()XMLTEXT(valueString)
创建一个XML文本元素,这个方法返回字符串。例子如下:CALL XMLTEXT(‘test‘)ARRAY_GET(arrayExpression, indexExpression)
返回一个数组元素,这个方法返回一个字符串。例子如下:CALL ARRAY_GET((‘Hello‘, ‘World‘), 2)ARRAY_LENGTH(arrayExpression)返回一个数组的长度。例子如下:CALL ARRAY_LENGTH((‘Hello‘, ‘World‘))AUTOCOMMIT()
如果在这个SESSION上自动提交被打开,将返回TRUE。例子如下:AUTOCOMMIT()CANCEL_SESSION(sessionInt)
取消另外的SESSION正在执行的语句。这个方法仅工作在多线程内核被启动的情况下 (多线程查看 SET MULTI_THREADED)。如果语句被取消返回TRUE,如果SESSION已经关闭或是没有语句正在执行,返回FALSE。
执行这个语句需要管理员权限。例子如下:CANCEL_SESSION(3)CASEWHEN FunctionCASEWHEN(boolean, aValue, bValue)
如果boolean表达式为真返回aValue,否则返回bValue。返回与输入参数类型相同的数据类型。例子如下:CASEWHEN(ID=1, ‘A‘, ‘B‘)CAST(value AS dataType)
转换一个值为另外一种数据类型。当转换文本为数字时,默认的JAVA转换规则被使用(前缀为 0x 或 # 表示16进制数,前缀为0表示8进制数)。例子如下:CAST(NAME AS INT)COALESCE(aValue, bValue [,...])
返回第一个非空值。例子如下:COALESCE(A, B, C)CONVERT(value, dataType)
转换一个值为另外一种数据类型。例子如下:CONVERT(NAME, INT)CURRVAL( [ schemaName, ] sequenceString )
返回序列的当前(最后)值,不依赖SESSION。如果序列刚创建,方法返回(start - interval)。如果SCHEMA名没有指定,当前SCHEMA被指定。如果SCHEMA名没有被指定,序列名将被转换为大写(为了兼容性)。这个方法返回长整数。例子如下:CURRVAL(‘TEST_SEQ‘)CSVREAD(fileNameString [, columnsString [, csvOptions ] ] )
返回读CSV(逗号分隔字段)文件的结果集。对于每个参数,NULL表示缺省值被提供。
如果字段名列表被指定(使用字段分隔符分割的字段列表),将使用这些字段名,如果没有被指定(或者它们被设置为NULL),文件的第一行被解释为字段列名,在这种情况下,列名不包含特殊字符(仅包含字母、 ‘_‘、数字;类似于JAVA标识符的规则),并且是区分大小写的。另外,列名都是区分大小写的,这表示你需要使用引用标识符(见下面的说明)。
缺省的字符集为系统的缺省值,缺省的字段分隔符是逗号。没有加引号的值匹配空串时被解析为NULL,左右的列类型都是 VARCHAR。
这个方法能被像表一样被使用: SELECT * FROM CSVREAD(...)。也可以使用URL来替代文件使用,如 jar:file:///c:/temp/example.zip!/org/example/nested.zip.
执行这个语句需要管理员权限。例子如下:
CALL CSVREAD(‘test.csv‘);
-- 如一个包含字段 ID, NAME 的文件
-- 文件的字符集为 UTF-8 ,管道符 (|) 作为字段分隔符
CALL CSVREAD(‘test2.csv‘, ‘ID|NAME‘, ‘UTF-8‘, ‘|‘);--读一个分号分隔的文件
SELECT * FROM CSVREAD(‘data/test.csv‘, NULL, NULL, ‘;‘);
SELECT "Last Name" FROM CSVREAD(‘address.csv‘);CSVWRITE( fileNameString, queryString [, csvOptions [, lineSepString] ] )
写一个CSV(逗号分隔)文件爱你。如果文件存在就覆盖。对每个参数,使用NULL表示使用缺省值。缺省字符集为系统缺省值,缺省字段分隔符为逗号。
值将使用缺省的字符串表示法转换为文本。如果需要其他转换方式需要改变选择语句。当参数为NULL时将写入空串(缺省情况下,当NULL出现时什么都不写)。缺省的行分隔符为系统的缺省值(参见系统属性‘line.separator‘ )。
返回写的行数。执行这个语句需要管理员权限。
例子如下:CALL CSVWRITE(‘test.csv‘, ‘SELECT * FROM TEST‘);
-- 写文件使用 UTF-8 编码,管道符(|)为字段分隔符
CALL CSVWRITE(‘test2.csv‘, ‘SELECT * FROM TEST‘, ‘UTF-8‘, ‘|‘);DATABASE()
返回数据库名例子如下:CALL DATABASE();DATABASE_PATH()
返回数据库文件路径和数据库名,如果不是基于文件的数据库,返回NULL。例子如下:CALL DATABASE_PATH();FILE_READ(fileNameString [,encodingString])
返回文件内容,如果仅一个参数被提供,数据被作为 BLOB返回。如果两个参数被提供,数据被作为 CLOB 文本返回。 第二个参数作为字符集使用,NULL表示使用系统缺省的字符集。文件名和URL被支持。执行这个语句需要管理员权限。例子如下:SELECT LENGTH(FILE_READ(‘~/.h2.server.properties‘)) LEN;
SELECT FILE_READ(‘http://localhost:8182/stylesheet.css‘, NULL) CSS;GREATEST(aValue, bValue [,...])
返回最大的非空值,如果所有的值为NULL,将返回NULL。例子如下:CALL GREATEST(1, 2, 3);IDENTITY()
返回当前SESSION最后写入的标识符。当一个新的序列号产生时,这个值都将改变,即使是在触发器或是JAVA方法中,详细参见 SCOPE_IDENTITY()。这个方法返回一个长整数。例子如下:CALL IDENTITY();IFNULL(aValue, bValue)
如果值为非空返回aValue,否则返回bValue。例子如下:CALL IFNULL(NULL, ‘‘);LEAST(aValue, bValue [,...])
返回非空的最小值,如果所有的值都是NULL,将返回NULL。例子如下:CALL LEAST(1, 2, 3);LOCK_MODE()
返回当前所模式。参见SET LOCK_MODE。这个方法返回一个整数。例子如下:CALL LOCK_MODE();LOCK_TIMEOUT()
返回当前SESSION的锁超时时间(毫秒数)。例子如下:LOCK_TIMEOUT()LINK_SCHEMA(targetSchemaString, driverString, urlString,
userString, passwordString, sourceSchemaString)
在一个SCHEMA创建所有表的表链接。如果同名的表已经存在,将先删除它们。目标SCHEMA在不存在的情况下将被自动创建。驱动如果已经加载了驱动名可以为空。链接表列表作为结果集被返回。执行这个语句需要管理员权限。例子如下:CALL LINK_SCHEMA(‘TEST2‘, ‘‘, ‘jdbc:h2:test2‘, ‘sa‘, ‘sa‘, ‘PUBLIC‘);MEMORY_FREE()
返回空闲内存,单位为 KB (1024 字节为一 KB)。这个方法返回一个整数。在返回这个值前,垃圾收集器将被执行。这行这个语句需要管理员权限。例子如下:MEMORY_FREE()MEMORY_USED()
返回已用的内存,单位为 KB (1024 字节为一 KB)。这个方法返回一个整数。在返回这个值前,垃圾收集器将被执行。这行这个语句需要管理员权限。例子如下:MEMORY_USED()NEXTVAL( [ schemaName, ] sequenceString )
返回序列的下一个值。已经被使用过的值永远也不会再用,即使事务被回滚。如果SCHEMA没有被设置,当前SCHEMA被使用,序列名将被转换为大写(为了兼容性)。这个方法返回一个长整数。例子如下:NEXTVAL(‘TEST_SEQ‘)NULLIF(aValue, bValue)
如果aValue等于bValue返回NULL,否则返回aValue。例子如下:NULLIF(A, B)READONLY()
如果数据库是只读的,返回TRUE。例子如下:READONLY()ROWNUM()
返回当前行数,这个方法返回一个整数。这个方法支持SELECT语句、DELETE语句和UPDATE语句。第一行为行号1,行号在结果集分组和排序前被计算。要获得排序和分组之后的行号,需要使用子查询。例子如下:
SELECT ROWNUM(), * FROM TEST;
SELECT ROWNUM(), * FROM (SELECT * FROM TEST ORDER BY NAME);SCHEMA()
返回这个SESSION的缺省SCHEMA名。例子如下:CALL SCHEMA()SCOPE_IDENTITY()
返回当前SESSION当前作用范围的最后插入的标识符值,在触发器和JAVA方法中的改变将被忽略。参见 IDENTITY()。这个方法返回一个长整数。例子如下:CALL SCOPE_IDENTITY();SESSION_ID()
返回当前数据库连接的唯一SESSION标识号。这个标识号在连接打开期间一直存在。这个方法返回一个整数。数据库引擎可以重复使用已经关闭的连接的SESSION标识号。例子如下:CALL SESSION_ID()SET(@variableName, value)
更新指定变量的值。新值将被返回。当使用在查询中时,值将被按读的顺序进行更新。例子如下:SELECT X, SET(@I, IFNULL(@I, 0)+X) RUNNING_TOTAL FROM SYSTEM_RANGE(1, 10)TABLE{ TABLE | TABLE_DISTINCT } ( { name dataType = expression } [,...] )
返回结果集。 TABLE_DISTINCT 删除重复的行。例子如下:SELECT * FROM TABLE(ID INT=(1, 2), NAME VARCHAR=(‘Hello‘, ‘World‘))TRANSACTION_ID()
返回当前SESSION的当前事务ID。如果没有未提交的改变,或是数据不是持久化的,这个方法返回NULL,否则下面形式的值被返回: logFileId-position-sessionId。这个方法返回一个字符串。这个值在数据库重启后也是唯一的值(值不会被重新使用)。例子如下:CALL TRANSACTION_ID()USER{ USER | CURRENT_USER } ()
返回当前SESSION的当前用户的用户名。例子如下:CURRENT_USER()CURRENT_DATE{ CURRENT_DATE [ () ] | CURDATE() | SYSDATE | TODAY }
返回当前日期。例子如下:CURRENT_DATE()CURRENT_TIME{ CURRENT_TIME [ () ] | CURTIME() }
返回当前时间。例子如下:CURRENT_TIME()CURRENT_TIMESTAMP{ CURRENT_TIMESTAMP [ ( [ int ] ) ] | NOW( [ int ] ) }
返回当前时间戳,纳秒精度参数是可选的。例子如下:CURRENT_TIMESTAMP()DATEADD(unitString, addInt, timestamp)
增加一个单元到时间戳中,使用字符串表示这个单元,使用负数来裁剪单元。同样的单元在 EXTRACT 方法中被支持。这个方法返回一个时间戳。例子如下:DATEADD(MONTH, 1, DATE ‘2001-01-31‘)DATEDIFF(unitString, aTimestamp, bTimestamp)
返回两个时间戳的差值。这个方法返回一个长整数。字符串表示这个单元。同样的单元在 EXTRACT 方法中被支持。例子如下:DATEDIFF(YEAR, T1.CREATED, T2.CREATED)DAYNAME(date)
返回日期的名称(英语)。例子如下:DAYNAME(CREATED)DAY_OF_MONTH(date)
返回月份的第几天 (1-31)。例子如下:DAY_OF_MONTH(CREATED)DAY_OF_WEEK(date)
返回星期的第几天 (1 表示星期一).例子如下:DAY_OF_WEEK(CREATED)DAY_OF_YEAR(date)
返回一年中的第几天 (1-366).例子如下:DAY_OF_YEAR(CREATED)EXTRACT( { YEAR | YY | MONTH | MM | DAY | DD | DAY_OF_YEAR
| DOY | HOUR | HH | MINUTE | MI | SECOND | SS | MILLISECOND | MS }
FROM timestamp )
返回时间戳里指定的值。这个方法返回一个整数。例子如下:EXTRACT(SECOND FROM CURRENT_TIMESTAMP)FORMATDATETIME ( timestamp, formatString , localeString , timeZoneString)格式化日期、时间或时间戳为字符串。最重要的格式符为: y 年, M 月, d 日, H 小时, m 分钟, s 秒。详细的格式说明参见 java.text.SimpleDateFormat。这个方法返回一个字符串。例子如下:CALL FORMATDATETIME(TIMESTAMP ‘2001-02-03 04:05:06‘, ‘EEE, d MMM yyyy HH:mm:ss z‘, ‘en‘, ‘GMT‘)HOUR(timestamp)
返回时间戳中的小时数(0-23)。例子如下:HOUR(CREATED)MINUTE(timestamp)
返回时间戳中的分钟数(0-59)。例子如下:MINUTE(CREATED)MONTH(timestamp)
返回时间戳中的月份数(1-12)。例子如下:MONTH(CREATED)MONTHNAME(date)
返回指定月的月名(英文)。例子如下:MONTHNAME(CREATED)PARSEDATETIME(string, formatString, localeString , timeZoneString)
解析字符串返回时间戳。最重要的格式符有: y 年, M 月, d 日, H 小时, m 分钟, s 秒。关于格式更多信息,请参考java.text.SimpleDateFormat.例子如下:CALL PARSEDATETIME(‘Sat, 3 Feb 2001 03:05:06 GMT‘, ‘EEE, d MMM yyyy HH:mm:ss z‘, ‘en‘, ‘GMT‘)QUARTER(timestamp)
返回时间戳的季度数 (1-4) 。例子如下:QUARTER(CREATED)SECOND(timestamp)
返回时间戳的秒数(0-59)。例子如下:SECOND(CREATED)WEEK(timestamp)
返回时间戳的星期数(1-53) 。这个方法使用当前系统所在地的时区。例子如下:WEEK(CREATED)YEAR(timestamp)
返回时间戳的年份例子如下:YEAR(CREATED)

H2内存数据库的函数相关推荐

  1. 在Spring Boot使用H2内存数据库

    文章目录 添加依赖配置 数据库配置 添加初始数据 访问H2数据库 在Spring Boot使用H2内存数据库 在之前的文章中我们有提到在Spring Boot中使用H2内存数据库方便开发和测试.本文我 ...

  2. springboot整合H2内存数据库,实现单元测试与数据库无关性

    springboot整合H2内存数据库,实现单元测试与数据库无关性 一.新建spring boot工程 新建工程的时候,需要加入JPA,H2依赖 二.工程结构 pom文件依赖如下: [html] vi ...

  3. Spring项目使用H2内存数据库做单元测试

    Spring 做单元测试 单元测试很重要,对于Spring项目,特别是测试Service层或者dao层的代码时.需要验证访问数据库的逻辑是否正确.测试Dao层的代码两种方式 使用外置数据库 测试环境在 ...

  4. SpringBoot使用H2内存数据库单元测试的代码示例

    一.背景 单元测试是提高代码质量和保证代码正确性的重要保证. DAO的单元测试有常见的两种方案. [1]使用H2这类内存数据库进行单元测试. [2]使用MySQL数据库,测试后回滚. 两种方案各有利弊 ...

  5. SQLite和H2 内存数据库 对比

    H2数据库的使用: https://baomidou.com/guide/quick-start.html#%E9%85%8D%E7%BD%AE 内存数据库,顾名思义就是将数据放在内存中直接操作的数据 ...

  6. JPA H2内存数据库 demo

    本文基于SpringBoot工程,引用的依赖包有thymeleaf.springmvc.jpa.h2.mysql,考虑篇幅,有些代码省略. 1.使用JPA需继承CrudRepository接口 继承C ...

  7. Spring Boot整合H2内存数据库配置及常见问题处理

    文章目录 H2 数据库简介 内存数据库配置与控制台连接 在内存中创建表以及插入数据 SpringBoot整合H2内存数据查询 常见问题及解决 问题1: Database "mem:XXX&q ...

  8. H2内存数据库数据类型

    由于H2是由java语言编写的,所以提供的数据类型都和java契合,下面给出数据类型列表: 一.基本的数据类型有哪些? 1.数字方面 整数(INT) 布尔型(BOOLEAN) 微整数(TINYINT) ...

  9. H2内存数据库简介和使用经验

    H2官网:H2 Database Engine (redirect) H2使用: 1. 通过embed模式,直接整合进Spring中 1.1. pom.xml中引入依赖 <dependency& ...

最新文章

  1. 返回一个一维整数数组中最大子数组的和02
  2. Shell Sort 希尔排序 收藏
  3. win10电脑插耳机没声音_教你Win10怎么录制电脑内部声音
  4. php如何写回调函数,php – 如何使用类方法作为回调函数?
  5. fir.im 持续集成技术实践
  6. 全文索引 - Pomelo.EFCore.MySql
  7. 【nginx】关于Nginx的一些优化(突破十万并发)
  8. 克鲁斯卡尔重构树小结
  9. java+对图像进行直线检测_Java调用OpenCV进行Hough变换直线检测
  10. Win7如何自定义鼠标右键菜单 添加新建文本文档
  11. 适合中小企业发展的内网即时通讯软件应该具备什么
  12. pointer在html作用,html-CSS中的“ cursor:pointer”效果为什么不起作用
  13. 如何提高自己代码的可读性?
  14. TMS320C6678开发笔记---IBL编译与分析2
  15. 调用函数求三个数中的最大数
  16. Imperva之SecureSphere打补丁
  17. 第四章:数据存储-csv文件处理-读取csv文件的两种方式
  18. dicom 的mm换算成像素Pixel
  19. fprintf()函数的运用
  20. 实现上传图片-生成唯一的名字

热门文章

  1. 复旦DMG:《交通运输公共数据开放报告》首次发布
  2. python wordcloud路径_Python:wordcloud
  3. 四元数笔记(1)—— 四元数及其运算
  4. SpringCloud的五大组件之一:Netflix Eureka
  5. java的Scanner
  6. 【引用】引用的概念与基本使用原则
  7. 幼儿园去“小学化”方法途径研究开题报告
  8. Python脚本之操作Redis Cluster
  9. 你还认为JS中万物皆对象?
  10. 2021-10-16python笔记(Linux内核简介与Linux基础命令)