数字从int到varchar

时间:2012-06-24 00:57:48

标签: sql database postgresql

我在postgresql数据库中有列。他们是彩票号码。确切地说,四位数的长度。最初我将列的数据类型作为int。我插入了所有的彩票号码。插入所有数字后,我意识到它切断了我的零。例如0925是925.我将数据类型修复为varchar,但现在我需要弄清楚如何使用相同的数据将其从int修复为varchar。数据长度必须为4位数。我试图弄清楚有多少问题数字,我不能写一个select语句告诉我有多少行少于4位。

我应该怎么做?

感谢。

2 个答案:

答案 0 :(得分:4)

  

我试图弄清楚有多少问题数字,我无法编写一个select语句,告诉我有多少行少于4位。

SELECT COUNT(*)
FROM lottery
WHERE char_length(x) < 4

查看在线工作:sqlfiddle

要修复它们,您可能会发现lpad有用。请注意,实际上并不需要WHERE子句。

UPDATE lottery
SET x = lpad(x, 4, '0')

查看在线工作:sqlfiddle

答案 1 :(得分:1)

使用to_char()格式化您的号码:

SELECT to_char(123, 'FM0000');

您甚至可以将它们保留为整数,并在查询中使用表达式。

或者,将列从整数转换回文本:

ALTER TABLE tbl ALTER column col TYPE text USING to_char(col, 'FM0000');

由于您似乎已将数字转换为varchar,因此表达式需要额外转换为整数:

SELECT to_char(col::int, 'FM0000')
FROM   tbl;