PostgreSQL错误:没有名为“的内置函数”;(SQL状态42883)

PostgreSQL错误:没有名为“的内置函数”;(SQL状态42883),postgresql,plpgsql,bigint,Postgresql,Plpgsql,Bigint,我试图在PostgreSQL中添加一个非常简单的函数,将IP地址从整数转换为文本格式 这是函数的代码: CREATE FUNCTION custom_int_to_ip(ip BIGINT) RETURNS TEXT AS $$ DECLARE octet1 BIGINT; octet2 TINYINT; octet3 TINYINT; octet4 TINYINT; restofip BIGINT; BEGIN octet1 = ip / 16777216; restofip = ip -

我试图在PostgreSQL中添加一个非常简单的函数,将IP地址从整数转换为文本格式

这是函数的代码:

CREATE FUNCTION  custom_int_to_ip(ip BIGINT)
RETURNS TEXT
AS
$$
DECLARE
octet1 BIGINT;
octet2 TINYINT;
octet3 TINYINT;
octet4 TINYINT;
restofip BIGINT;
BEGIN
octet1 = ip / 16777216;
restofip = ip - (octet1 * 16777216);
octet2 = restofip / 65536;
restofip  = restofip - (octet2 * 65536);
octet3 = restofip / 256;
octet4 = restofip - (octet3 * 256);
END; 
RETURN(CONVERT(TEXT, octet1) + '.' +
CONVERT(TEXT, octet2) + '.' +
CONVERT(TEXT, octet3) + '.' +
CONVERT(TEXT, octet4));
$$
LANGUAGE internal;
作为重播,我获得以下错误:

ERROR: there is no built-in function named "
下面的几行

SQL state: 42883
如果有人看到我的错误,请告诉我,我一直在尝试不同的语法并搜索特定SQL状态的信息,但不知道发生了什么


提前感谢。

这里有两个错误:

  • 与几乎所有其他数据库一样,PostgreSQL使用标准字符串连接运算符
  • PostgreSQL中没有
    convert
    函数,您应该使用它将数字转换为字符串

  • 顺便说一句:您知道PostgreSQL中有一个本机IP数据类型吗?

    这里有两个错误:

  • 与几乎所有其他数据库一样,PostgreSQL使用标准字符串连接运算符
  • PostgreSQL中没有
    convert
    函数,您应该使用它将数字转换为字符串

  • 顺便说一句:你知道PostgreSQL中有一个本地IP数据类型吗?

    除了一个没有名字的马已经指出的以外:

    • 使用代替
    • MySQL和其他数据库都有
      tinyint
      。在PostgreSQL中,使用
      smallint
      int2
      (同义词)。看。更好的是,在这种特殊情况下,使所有变量
      bigint
      ,并保存额外的转换
    • 使用赋值运算符
      :=
      而不是
      =
      <代码>=未记录,在将来的版本中可能会停止工作,恕不另行通知。请看这里:
    • 移动<代码>结束结束
    • 对于相同的输入,输出保证是相同的,因此,在某些情况下,请使用命令来加速输出
    总而言之: 电话:

    输出:

    73.99.24.255
    

    此外,一匹没有名字的马已经指出:

    • 使用代替
    • MySQL和其他数据库都有
      tinyint
      。在PostgreSQL中,使用
      smallint
      int2
      (同义词)。看。更好的是,在这种特殊情况下,使所有变量
      bigint
      ,并保存额外的转换
    • 使用赋值运算符
      :=
      而不是
      =
      <代码>=未记录,在将来的版本中可能会停止工作,恕不另行通知。请看这里:
    • 移动<代码>结束结束
    • 对于相同的输入,输出保证是相同的,因此,在某些情况下,请使用命令来加速输出
    总而言之: 电话:

    输出:

    73.99.24.255
    
    73.99.24.255