postgresql:创建文本到整数乘法运算符
postgresql: creating a text to integer multiplication operator
我正在寻找调试 Posgresql 内部的 Microsoft SQL 查询(长话短说,我更喜欢它 returns 的错误消息)当我遇到一些 SQL 时,它正在成倍增加一个带有整数的子字符串 select,现在我显然可以使用 ::integer
转换每个部分,但是有许多子字符串需要转换和许多我想 运行 通过的查询所以我决定我可能通过使用以下函数使用运算符解决此问题,让我的生活更轻松。
CREATE OR REPLACE FUNCTION public.multiplytext2int(text,integer)
RETURNS integer AS
$$
SELECT CASE
WHEN ~ '^[0-9]+$'
THEN ::integer *
ELSE 0::integer
END
$$
LANGUAGE sql IMMUTABLE;
显然逻辑不是完全无懈可击的,但足以满足我 运行ning 的查询,所以我尝试创建运算符
CREATE OPERATOR * (
LEFTARG = text
,RIGHTARG = integer
,FUNCTION = multiplytext2int
)
当我 运行 出现以下错误时
WARNING: operator attribute "function" not recognized ERROR:
operator procedure must be specified
********** Error **********
ERROR: operator procedure must be specified SQL state: 42P13
我做错了什么?
最终我希望能够在没有运算符不存在错误的情况下键入 SELECT '1'::text * 2::integer
。
虽然它是一个函数,但要使用的参数是procedure
。
CREATE OPERATOR * (
LEFTARG = text
,RIGHTARG = integer
,PROCEDURE = multiplytext2int
)
我正在寻找调试 Posgresql 内部的 Microsoft SQL 查询(长话短说,我更喜欢它 returns 的错误消息)当我遇到一些 SQL 时,它正在成倍增加一个带有整数的子字符串 select,现在我显然可以使用 ::integer
转换每个部分,但是有许多子字符串需要转换和许多我想 运行 通过的查询所以我决定我可能通过使用以下函数使用运算符解决此问题,让我的生活更轻松。
CREATE OR REPLACE FUNCTION public.multiplytext2int(text,integer)
RETURNS integer AS
$$
SELECT CASE
WHEN ~ '^[0-9]+$'
THEN ::integer *
ELSE 0::integer
END
$$
LANGUAGE sql IMMUTABLE;
显然逻辑不是完全无懈可击的,但足以满足我 运行ning 的查询,所以我尝试创建运算符
CREATE OPERATOR * (
LEFTARG = text
,RIGHTARG = integer
,FUNCTION = multiplytext2int
)
当我 运行 出现以下错误时
WARNING: operator attribute "function" not recognized ERROR: operator procedure must be specified
********** Error **********
ERROR: operator procedure must be specified SQL state: 42P13
我做错了什么?
最终我希望能够在没有运算符不存在错误的情况下键入 SELECT '1'::text * 2::integer
。
虽然它是一个函数,但要使用的参数是procedure
。
CREATE OPERATOR * (
LEFTARG = text
,RIGHTARG = integer
,PROCEDURE = multiplytext2int
)