系统函数41个 在下面两个方法中 org.h2.expression.Function.getValueWithArgs(Session, Expression[]) org.h2.expression.Function.getSimpleValue(Session, Value, Expression[], Value[]) 少了3个函数: ROW_NUMBER、TABLE、TABLE_DISTINCT //ROW_NUMBER函数虽然定义了,但ROW_NUMBER()函数无效,不支持这样的语法 //sql = "SELECT ROW_NUMBER()"; //ROWNUM函数虽然没有定义,但ROWNUM()是有效,Parser在解析时把他当成ROWNUM伪字段处理 //当成了org.h2.expression.Rownum,见org.h2.command.Parser.readTerm() //sql = "SELECT ROWNUM()"; //这样就没问题了,在这个方法中org.h2.command.Parser.readFunction(Schema, String) //把ROW_NUMBER转成org.h2.expression.Rownum了 //sql = "SELECT ROW_NUMBER()OVER()"; 在这个方法中 org.h2.command.Parser.readFunction(Schema, String) 把TABLE、TABLE_DISTINCT转成TableFunction了。 函数名 函数种类 返回值的类型 参数个数(-1表示可变参数) nullIfParameterIsNull deterministic fast ------------------------------------------------------------------------------------ DATABASE 150 VARCHAR 0 true false false USER 151 VARCHAR 0 true false false CURRENT_USER 152 VARCHAR 0 true false false IDENTITY 153 BIGINT 0 true false false IDENTITY_VAL_LOCAL 153 BIGINT 0 true false false 与前面相同 LAST_INSERT_ID 153 BIGINT 0 true false false 与前面相同 LASTVAL 153 BIGINT 0 true false false 与前面相同 SCOPE_IDENTITY 154 BIGINT 0 true false false AUTOCOMMIT 155 BOOLEAN 0 true false false READONLY 156 BOOLEAN 0 true false false DATABASE_PATH 157 VARCHAR 0 true true false LOCK_TIMEOUT 158 INTEGER 0 true false false IFNULL 200 NULL 2 false true false ISNULL 200 NULL 2 false true false 与前面相同 CASEWHEN 201 NULL 3 false true false CONVERT 202 NULL 1 false true false CAST 203 NULL 1 false true false TRUNCATE_VALUE 227 NULL 3 false true false COALESCE 204 NULL -1 false true false NVL 204 NULL -1 false true false 与前面相同 NVL2 228 NULL 3 false true false NULLIF 205 NULL 2 false true false CASE 206 NULL -1 false true false NEXTVAL 207 BIGINT -1 true false false CURRVAL 208 BIGINT -1 true false false ARRAY_GET 209 VARCHAR 2 true true false ARRAY_CONTAINS 230 BOOLEAN 2 false true false CSVREAD 210 RESULT_SET -1 false false true CSVWRITE 211 INTEGER -1 false false false MEMORY_FREE 212 INTEGER 0 true false false MEMORY_USED 213 INTEGER 0 true false false LOCK_MODE 214 INTEGER 0 true false false SCHEMA 215 VARCHAR 0 true false false SESSION_ID 216 INTEGER 0 true false false ARRAY_LENGTH 217 INTEGER 1 true true false LINK_SCHEMA 218 RESULT_SET 6 true false false LEAST 220 NULL -1 false true false GREATEST 219 NULL -1 false true false CANCEL_SESSION 221 BOOLEAN 1 true false false SET 222 NULL 2 false false false FILE_READ 225 NULL -1 false false false TRANSACTION_ID 226 VARCHAR 0 true false false DECODE 229 NULL -1 false true false TABLE 223 RESULT_SET -1 false true false TABLE_DISTINCT 224 RESULT_SET -1 false true false ROW_NUMBER 300 BIGINT 0 false true false