H 2メモリデータベースの関数
17801 ワード
各データベースは利用者のクエリーの簡便性と使用効率のために、利用者に専用の関数を提供しています.H 2も同様です.oracleほど強力な関数はありませんが、一般的なニーズの使用は満足できます.以下では、どの関数があるかを簡単に紹介します.
一、関数の分類及び名称
二、関数の使用及び説明
一、関数の分類及び名称
1、 (Aggregate Functions)
AVG
BOOL_AND
BOOL_OR
COUNT
GROUP_CONCAT
MAX
MIN
SUM
SELECTIVITY
STDDEV_POP
STDDEV_SAMP
VAR_POP
VAR_SAMP
2、 (Numeric Functions)
ABS
ACOS
ASIN
ATAN
COS
COT
SIN
TAN
ATAN2
BITAND
BITOR
BITXOR
MOD
CEILING
DEGREES
EXP
FLOOR
LOG
LOG10
RADIANS
SQRT
PI
POWER
RAND
RANDOM_UUID
ROUND
ROUNDMAGIC
SECURE_RAND
SIGN
ENCRYPT
DECRYPT
HASH
TRUNCATE
COMPRESS
EXPAND
ZERO
3、 (String Functions)
ASCII
BIT_LENGTH
LENGTH
OCTET_LENGTH
CHAR
CONCAT
DIFFERENCE
HEXTORAW
RAWTOHEX
INSTR
INSERT Function
LOWER
UPPER
LEFT
RIGHT
LOCATE
POSITION
LPAD
RPAD
LTRIM
RTRIM
TRIM
REGEXP_REPLACE
REPEAT
REPLACE
SOUNDEX
SPACE
STRINGDECODE
STRINGENCODE
STRINGTOUTF8
SUBSTRING
UTF8TOSTRING
XMLATTR
XMLNODE
XMLCOMMENT
XMLCDATA
XMLSTARTDOC
XMLTEXT
4、 (Time and Date Functions)
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DAYNAME
DAY_OF_MONTH
DAY_OF_WEEK
DAY_OF_YEAR
EXTRACT
FORMATDATETIME
HOUR
MINUTE
MONTH
MONTHNAME
PARSEDATETIME
QUARTER
SECOND
WEEK
YEAR
5、 (System Functions)
ARRAY_GET
ARRAY_LENGTH
AUTOCOMMIT
CANCEL_SESSION
CASEWHEN Function
CAST
COALESCE
CONVERT
CURRVAL
CSVREAD
CSVWRITE
DATABASE
DATABASE_PATH
FILE_READ
GREATEST
IDENTITY
IFNULL
LEAST
LOCK_MODE
LOCK_TIMEOUT
LINK_SCHEMA
MEMORY_FREE
MEMORY_USED
NEXTVAL
NULLIF
READONLY
ROWNUM
SCHEMA
SCOPE_IDENTITY
SESSION_ID
SET
TABLE
TRANSACTION_ID
USER
二、関数の使用及び説明
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_CONCAT
GROUP_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()<20000
STDDEV_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,
, \f, \r, \", \\, \, \u。 。
:CALL STRINGENCODE(STRINGDECODE(‘Lines 1
Line 2‘))
STRINGENCODE(string)
JAVA 。 \b, \t,
, \f, \r, \", \\, \, \u。 。
:CALL STRINGENCODE(STRINGDECODE(‘Lines 1
Line 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()
‘‘ 。
: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)