PostgreSQL数据库中Concat函数创建

创建数组类型的concat函数

CREATE OR REPLACE FUNCTION concat(VARIADIC str text[])
  RETURNS text AS
$BODY$
DECLARE
  result text := '';
BEGIN
  FOR i IN 1..array_length(str, 1) LOOP
    result := result::text || str[i]::text;
  END LOOP;
  RETURN result;
END;
$BODY$
LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION concat(VARIADIC str bigint[])
  RETURNS text AS
$BODY$
DECLARE
  result text := '';
BEGIN
  FOR i IN 1..array_length(str, 1) LOOP
    result := result::text || str[i]::text;
  END LOOP;
  RETURN result;
END;
$BODY$
LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION concat(VARIADIC str integer[])
  RETURNS text AS
$BODY$
DECLARE
  result text := '';
BEGIN
  FOR i IN 1..array_length(str, 1) LOOP
    result := result::text || str[i]::text;
  END LOOP;
  RETURN result;
END;
$BODY$
LANGUAGE plpgsql;

其他类型(根据需要选择)

CREATE OR REPLACE FUNCTION concat(str1 text,num1 numeric,str2 text)
  RETURNS text AS
$BODY$
BEGIN
  return concat(str1,num1::text,str2);
END;
$BODY$
LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION concat(str1 text,num1 numeric)
  RETURNS text AS
$BODY$
BEGIN
  return concat(str1,num1::text);
END;
$BODY$
LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION concat(str1 text,num1 numeric,num2 numeric)
  RETURNS text AS
$BODY$
BEGIN
  return concat(str1,num1::text,num2::text);
END;
$BODY$
LANGUAGE plpgsql;

-- CREATE OR REPLACE FUNCTION ourea_yc.mysql_concat(num1 numeric,num2 numeric,num3 numeric)
--   RETURNS text AS
-- $BODY$
-- BEGIN
--   return concat(num1::text,num2::text,num3::text);
-- END;
-- $BODY$
-- LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION concat(num1 numeric,str1 text)
  RETURNS text AS
$BODY$
BEGIN
  return concat(num1::text,str1);
END;
$BODY$
LANGUAGE plpgsql;

-- CREATE OR REPLACE FUNCTION ourea_yc.mysql_concat(num1 numeric,num2 numeric)
--   RETURNS text AS
-- $BODY$
-- BEGIN
--   return concat(num1::text,num2::text);
-- END;
-- $BODY$
-- LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION concat(num1 numeric,str1 text,str2 text)
  RETURNS text AS
$BODY$
BEGIN
  return concat(num1::text,str1,str2);
END;
$BODY$
LANGUAGE plpgsql;

-- CREATE OR REPLACE FUNCTION ourea_yc.mysql_concat(num1 integer,num2 integer)
--   RETURNS text AS
-- $BODY$
-- BEGIN
--   return concat(num1::text,num2::text);
-- END;
-- $BODY$
-- LANGUAGE plpgsql;

-- CREATE OR REPLACE FUNCTION ourea_yc.mysql_concat(num1 bigint,num2 bigint)
--   RETURNS text AS
-- $BODY$
-- BEGIN
--   return concat(num1::text,num2::text);
-- END;
-- $BODY$
-- LANGUAGE plpgsql;

-- CREATE OR REPLACE FUNCTION ourea_yc.mysql_concat(num1 bigint,num2 bigint,num3 bigint)
--   RETURNS text AS
-- $BODY$
-- BEGIN
--   return concat(num1::text,num2::text,num3::text);
-- END;
-- $BODY$
-- LANGUAGE plpgsql;

-- CREATE OR REPLACE FUNCTION ourea_yc.mysql_concat(num1 integer,num2 integer,num3 integer)
--   RETURNS text AS
-- $BODY$
-- BEGIN
--   return concat(num1::text,num2::text,num3::text);
-- END;
-- $BODY$
-- LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION concat(num1 integer,num2 integer,str1 text)
  RETURNS text AS
$BODY$
BEGIN
  return concat(num1::text,num2::text,str1);
END;
$BODY$
LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION concat(num1 integer,num2 text,str1 integer)
  RETURNS text AS
$BODY$
BEGIN
  return concat(num1::text,num2::text,str1);
END;
$BODY$
LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION concat(num1 text,num2 integer,str1 integer)
  RETURNS text AS
$BODY$
BEGIN
  return concat(num1::text,num2::text,str1);
END;
$BODY$
LANGUAGE plpgsql;

-- CREATE OR REPLACE FUNCTION concat(num1 text,num2 text,str1 integer)
--   RETURNS text AS
-- $BODY$
-- BEGIN
--   return concat(num1::text,num2::text,str1);
-- END;
-- $BODY$
-- LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION concat(num1 bigint,num2 bigint,str1 text)
  RETURNS text AS
$BODY$
BEGIN
  return concat(num1::text,num2::text,str1);
END;
$BODY$
LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION concat(num1 bigint,num2 text,str1 bigint)
  RETURNS text AS
$BODY$
BEGIN
  return concat(num1::text,num2::text,str1);
END;
$BODY$
LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION concat(num1 text,num2 bigint,str1 bigint)
  RETURNS text AS
$BODY$
BEGIN
  return concat(num1::text,num2::text,str1);
END;
$BODY$
LANGUAGE plpgsql;

-- CREATE OR REPLACE FUNCTION concat(num1 text,num2 text,str1 bigint)
--   RETURNS text AS
-- $BODY$
-- BEGIN
--   return concat(num1::text,num2::text,str1);
-- END;
-- $BODY$
-- LANGUAGE plpgsql;

-- CREATE OR REPLACE FUNCTION concat(num1 text,num2 text,str1 bigint)
--   RETURNS text AS
-- $BODY$
-- BEGIN
--   return concat(num1::text,num2::text,str1);
-- END;
-- $BODY$
-- LANGUAGE plpgsql;
-- CREATE OR REPLACE FUNCTION ourea_yc.mysql_concat(VARIADIC args text[])
--   RETURNS text AS
-- $$
-- BEGIN
--   RETURN array_to_string(args, '');
-- END;
-- $$
-- LANGUAGE plpgsql;

-- CREATE OR REPLACE FUNCTION ourea_yc.mysql_concat(VARIADIC args numeric[])
--   RETURNS text AS
-- $$
-- BEGIN
--   RETURN array_to_string(args::text, '');
-- END;
-- $$
-- LANGUAGE plpgsql;

测试

CONCAT('%',1,'%')

CONCAT('%','1','%')


-- mysql_concat(t,t)
-- mysql_concat(t,n)
-- mysql_concat(n,t)
-- mysql_concat(t,t,t)
-- mysql_concat(t,n,t)

SELECT concat('Hello', 123, true);

select concat('abc','wewewf');
select concat('%','1','%');
select concat('1','2','%','^','w')
select concat('1',2,3)
select concat('1',2)
select concat('1',2,'3')
select concat('1','2',3)
select concat(1,'2','3')
select concat(1,'2')
select concat(1,2,3)
select concat(1,2)
select concat(1,2,'3')
select concat(1,'2',3)
select concat(1,2,3,4,5,6)
select concat(1,'2',3,'4',5,'6')
select concat('1','2',3,'4',5,6)
select concat('1','2',null,'4',5,6)

select concat('1',2,'/')
select concat('1','/',3)
select concat('/',2,3)
select concat('/',2::integer,999999999::bigint)


select concat('/','2','3','4','5','6')

select concat((select id from t_resource limit 1),(select id from t_resource limit 1))




select concat_ws(',',1,2,'3','4','5')
select concat_ws(',','1',2,3,'4','5')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值