Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
postgresql将行更新为固定位数_Sql_Postgresql_Append - Fatal编程技术网

postgresql将行更新为固定位数

postgresql将行更新为固定位数,sql,postgresql,append,Sql,Postgresql,Append,我是sql查询的初学者,我正在尝试这样更新我的行: 1--->0001 15-->0015 254-->0254 1458-->1458 我的列的类型是文本,有很多列,所以我无法处理 update table1 set col1 = 0001 where col1 = 1; 等等 这个问题似乎很简单,但经过研究,我找不到解决办法。我所需要的只是 foreach row in col1 if((int)row>0 and < 10) then row = "000" + row;

我是sql查询的初学者,我正在尝试这样更新我的行:

1--->0001

15-->0015

254-->0254

1458-->1458

我的列的类型是文本,有很多列,所以我无法处理

update table1 set col1 = 0001 where col1 = 1;
等等

这个问题似乎很简单,但经过研究,我找不到解决办法。我所需要的只是

foreach row in col1
if((int)row>0 and < 10)
then row = "000" + row;
col1中的每一行
如果((int)行>0且<10)
然后row=“000”+行;
所有文本实际上都是整数值,但我必须将它们保留为文本。以上代码的sql查询是什么

谢谢

您可以使用
lpad()
函数:

update table1
   set col1 = lpad(col1, 4, '0')
where length(col1) < 4;
更新表1
设置col1=lpad(col1,4,'0')
式中,长度(col1)<4;


但真正的问题是:为什么要将数字存储为文本值?这几乎总是一个糟糕的选择

该列是什么数据类型?如果它是一个数字,它将永远不会存储前导零。(如字符串)谢谢,它可以工作,但必须有小的变化。我们必须将col1更改为“0”。这对我很有用:更新table1 set col1=lpad(col1,4,'0'),其中长度(col1)<4;