改变列标记类型 varchar('800');
ALTER COLUMN token TYPE varchar('800');
如何将“800”(字符串)转换为 800(整数)
我用过
ALTER COLUMN token TYPE varchar('800'::integer)
或
ALTER COLUMN token TYPE varchar(CAST('800' as integer))
但还是不行
请帮忙,谢谢
一些建议基于:
create table t (fld_1 varchar);
\d t
Table "public.t"
Column | Type | Collation | Nullable | Default
--------+-------------------+-----------+----------+---------
fld_1 | character varying | | |
在psql
中:
\set type_length '10'
alter table t alter COLUMN fld_1 type varchar(:type_length);
ALTER TABLE
\d t
Table "public.t"
Column | Type | Collation | Nullable | Default
--------+-----------------------+-----------+----------+---------
fld_1 | character varying(10) | | |
使用plpgsql
:
CREATE OR REPLACE FUNCTION public.type_change(type_length character varying)
RETURNS void
LANGUAGE plpgsql
AS $function$
BEGIN
execute format('alter table t alter COLUMN fld_1 type varchar(%s)', type_length);
RETURN;
END;
$function$
select type_change('50');
type_change
-------------
\d t
Table "public.t"
Column | Type | Collation | Nullable | Default
--------+-----------------------+-----------+----------+---------
fld_1 | character varying(50) | | |
您可以扩展上面的内容以使用 table 和列名,使其更通用。
当然,另一种选择是在您用来与数据库交互的任何 client/language 中动态构建查询。
如何将“800”(字符串)转换为 800(整数)
我用过
ALTER COLUMN token TYPE varchar('800'::integer)
或
ALTER COLUMN token TYPE varchar(CAST('800' as integer))
但还是不行
请帮忙,谢谢
一些建议基于:
create table t (fld_1 varchar);
\d t
Table "public.t"
Column | Type | Collation | Nullable | Default
--------+-------------------+-----------+----------+---------
fld_1 | character varying | | |
在psql
中:
\set type_length '10'
alter table t alter COLUMN fld_1 type varchar(:type_length);
ALTER TABLE
\d t
Table "public.t"
Column | Type | Collation | Nullable | Default
--------+-----------------------+-----------+----------+---------
fld_1 | character varying(10) | | |
使用plpgsql
:
CREATE OR REPLACE FUNCTION public.type_change(type_length character varying)
RETURNS void
LANGUAGE plpgsql
AS $function$
BEGIN
execute format('alter table t alter COLUMN fld_1 type varchar(%s)', type_length);
RETURN;
END;
$function$
select type_change('50');
type_change
-------------
\d t
Table "public.t"
Column | Type | Collation | Nullable | Default
--------+-----------------------+-----------+----------+---------
fld_1 | character varying(50) | | |
您可以扩展上面的内容以使用 table 和列名,使其更通用。
当然,另一种选择是在您用来与数据库交互的任何 client/language 中动态构建查询。