Java HSQLDB-从十六进制VARCHAR MAC地址到BIGINT的转换

Java HSQLDB-从十六进制VARCHAR MAC地址到BIGINT的转换,java,hsqldb,Java,Hsqldb,我有一个HSQLDB表,其中MAC地址存储为varchar,这不是很有效。我想将其转换为BIGINT,但我没有找到从VARCHAR hex到BIGINT/INTEGER的转换函数。我尝试像这样使用convert:convertclient_mac,BIGINT,但是遇到第一个非数字时失败了。有人知道吗 谢谢,我找到了一个解决方案: SELECT "java.lang.Long.decode"(concat('0x',replace(client_mac,'-',''))), FROM u

我有一个HSQLDB表,其中MAC地址存储为varchar,这不是很有效。我想将其转换为BIGINT,但我没有找到从VARCHAR hex到BIGINT/INTEGER的转换函数。我尝试像这样使用convert:convertclient_mac,BIGINT,但是遇到第一个非数字时失败了。有人知道吗


谢谢,

我找到了一个解决方案:

SELECT  "java.lang.Long.decode"(concat('0x',replace(client_mac,'-',''))),
FROM    user_accounting_sessions_table
这是一种变通方法,因为我想到的第一种方法是:

SELECT  "java.lang.Long.parseLong"(replace(client_mac,'-',''),16)
FROM    user_accounting_sessions_table
但这就产生了一个错误:

java.lang.ArrayIndexOutOfBoundsException: 1
    at org.hsqldb.Function.setArgument(Unknown Source)
    at org.hsqldb.Parser.readTerm(Unknown Source)
    at org.hsqldb.Parser.readFactor(Unknown Source)
    at org.hsqldb.Parser.readSum(Unknown Source)
    at org.hsqldb.Parser.readConcat(Unknown Source)
    at org.hsqldb.Parser.readCondition(Unknown Source)
    at org.hsqldb.Parser.readAnd(Unknown Source)
    at org.hsqldb.Parser.readOr(Unknown Source)
    at org.hsqldb.Parser.parseExpression(Unknown Source)
    at org.hsqldb.Parser.parseSelect(Unknown Source)
    at org.hsqldb.Parser.compileSelectStatement(Unknown Source)
    at org.hsqldb.DatabaseCommandInterpreter.executePart(Unknown Source)
    at org.hsqldb.DatabaseCommandInterpreter.execute(Unknown Source)
    at org.hsqldb.Session.sqlExecuteDirectNoPreChecks(Unknown Source)
    at org.hsqldb.Session.execute(Unknown Source)
    at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
    at org.hsqldb.jdbc.jdbcStatement.execute(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor35.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.onseven.dbvis.b.B.B.?(Z:2256)
    at com.onseven.dbvis.b.B.F$A.call(Z:2838)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
问题似乎出在第二个参数上。
但是,第一个可以正常工作。

堆栈跟踪显示了较旧版本的HSQLDB。与当前版本的HSQLDB一起使用时,第二个查询没有问题。