我在测试环境中使用H2 DB v1.4.182。它可以替代Oracle,它是生产供应商。我在测试环境中使用脚本创建了一些别名:
CREATE ALIAS IF NOT EXISTS REGEXP_LIKE as $$ boolean regexpLike(String s, String p) { return java.util.regex.Pattern.compile(p).matcher(s).find(); } $$;
CREATE ALIAS IF NOT EXISTS TO_NUMBER as $$ long toNumber(String s) { return Long.valueOf(s); } $$;
CREATE ALIAS if NOT EXISTS fn_val_check3 for "fakedata.testutil.TestUtil.fn_val_check";
前两个别名显示在INFORMATION_SCHEMA.FUNCTION_ALIASES
表中,最后一个(fn_val_check3
)不显示。
SELECT ALIAS_NAME FROM INFORMATION_SCHEMA.FUNCTION_ALIASES;
给我两行
ALIAS_NAME
TO_NUMBER
REGEXP_LIKE
我通过在控制台中直接运行CREATE ALIAS ...
来验证H2有其他别名,它说
CREATE ALIAS fn_val_check3 for "fakedata.testutil.TestUtil.fn_val_check";
Function alias "FN_VAL_CHECK3" already exists; SQL statement: CREATE ALIAS fn_val_check3 for "fakedata.testutil.TestUtil.fn_val_check" [90076-182] 90076/90076 (Help)
我使用验证组件来验证数据库中是否存在该函数,这就是我想知道的原因。我错过了什么或者这是一个众所周知的东西吗?