PostgreSQL中的bool类型转换为smallint的方法是什么
这篇文章主要介绍“PostgreSQL中的bool类型转换为smallint的方法是什么”,在日常操作中,相信很多人在PostgreSQL中的bool类型转换为smallint的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PostgreSQL中的bool类型转换为smallint的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
转换过程
1.使用psql中的\help alter table命令找到修改列类型的语法:
[local:/data/run/pg12]:5120pg12@testdb=#\helpaltertableCommand:ALTERTABLEDescription:changethedefinitionofatableSyntax:ALTERTABLE[IFEXISTS][ONLY]name[*]action[,...]...whereactionisoneof:ADD[COLUMN][IFNOTEXISTS]column_namedata_type[COLLATEcollation][column_constraint[...]]DROP[COLUMN][IFEXISTS]column_name[RESTRICT|CASCADE]ALTER[COLUMN]column_name[SETDATA]TYPEdata_type[COLLATEcollation][USINGexpression]ALTER[COLUMN]column_nameSETDEFAULTexpressionALTER[COLUMN]column_nameDROPDEFAULTALTER[COLUMN]column_name{SET|DROP}NOTNULLALTER[COLUMN]column_nameADDGENERATED{ALWAYS|BYDEFAULT}ASIDENTITY[(sequence_options)]ALTER[COLUMN]column_name{SETGENERATED{ALWAYS|BYDEFAULT}|SETsequence_option|RESTART[[WITH]restart]}[...]ALTER[COLUMN]column_nameDROPIDENTITY[IFEXISTS]ALTER[COLUMN]column_nameSETSTATISTICSintegerALTER[COLUMN]column_nameSET(attribute_option=value[,...])ALTER[COLUMN]column_nameRESET(attribute_option[,...])ALTER[COLUMN]column_nameSETSTORAGE{PLAIN|EXTERNAL|EXTENDED|MAIN}
2.执行转换
[local:/data/run/pg12]:5120pg12@testdb=#droptablet_bool;ERROR:table"t_bool"doesnotexist[local:/data/run/pg12]:5120pg12@testdb=#createtablet_bool(colbool);CREATETABLE[local:/data/run/pg12]:5120pg12@testdb=#altertablet_boolaltercolumncoltypesmallint;ERROR:column"col"cannotbecastautomaticallytotypesmallintHINT:Youmightneedtospecify"USINGcol::smallint".[local:/data/run/pg12]:5120pg12@testdb=#
提示指定使用”USING col::smallint”,翻看PG的语法:
ALTER[COLUMN]column_name[SETDATA]TYPEdata_type[COLLATEcollation][USINGexpression]
USING后面跟的是expression表达式,可以理解为如何转换的表达式,因此执行以下语句:
[local:/data/run/pg12]:5120pg12@testdb=#altertablet_boolaltercolumncoltypesmallintusingcol::int::smallint;ALTERTABLE
DONE!成功转换。
实际上,还可以更简化:
[local:/data/run/pg12]:5120pg12@testdb=#altertablet_boolaltercolumncoltypesmallintusingcol::int;ALTERTABLE
因为int到smallint是有转换的,不需要明确的int::smallint,但为了说明转换过程,加上该转换会清晰许多。
附录
测试脚本如下:
droptablet_bool;createtablet_bool(colbool);altertablet_boolaltercolumncoltypesmallint;altertablet_boolaltercolumncoltypesmallintusingcol::int::smallint;
到此,关于“PostgreSQL中的bool类型转换为smallint的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。