1

postgresql データベースに列があります。それらは宝くじです。正確には 4 桁の長さです。最初は、列のデータ型をintとして持っていました。すべての宝くじ番号を挿入しました。すべての数字を挿入した後、ゼロが切り落とされていることに気付きました。たとえば、0925 は 925 です。データ型を varchar に修正しましたが、同じデータで int から varchar に修正する方法を理解する必要があります。データの長さは 4 桁である必要があります。問題の番号がいくつあるかを把握しようとしていたのですが、4 桁未満の行がいくつあるかを示す select ステートメントを書くことができませんでした。

これについてどうすればよいですか?

ありがとう。

4

2 に答える 2

4

問題の番号がいくつあるかを把握しようとしていたのですが、4 桁未満の行がいくつあるかを示す select ステートメントを書くことができませんでした。

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

オンラインで動作することを確認してください: sqlfiddle

それらを修正すると、lpad役立つ場合があります。WHEREこの句は実際には必要ないことに注意してください。

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

オンラインで動作することを確認してください: sqlfiddle

于 2012-06-24T00:59:59.393 に答える
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;
于 2012-06-24T01:01:32.790 に答える