列が文字データ型(数値ではない)の場合country_id
、ゼロを付加して右端の部分を取ることができます。
UPDATE foo SET country_id = RIGHT(CONCATENATE('0000',country_id),4)
UPDATE foo SET country_id = LPAD(country_id, 4, '0')
(注:いずれかの値がcountry_id
4文字より長い場合、これらのステートメントのいずれかでデータが失われます... country_idが4文字を超える場合、最初のステートメントは最も右の文字を取得し、2番目のステートメントは左端の4文字を取得します。値の先頭に「-」文字が含まれているため、「00-4」などの奇妙な値になります。LTRIM関数を使用して、先頭のスペースを削除できます。
一方、country_id
が数値データ型の場合、先行ゼロを実際に追加することはできません。
整数型の場合、表示長とZEROFILLオプションを指定できます。
country_id INT(4) ZEROFILL
ただし、長さ修飾子とZEROFILL属性を使用して指定されたフォーマットを実行するのはクライアントアプリケーション次第であり、これらの属性を使用して「データベース内で」実行されることは実際にはありません。(MySQLコマンドラインクライアントはこれらの設定を監視し、最大4文字までゼロで埋められた値を表示します。ただし、他のクライアントはそれを行う必要はありません。)
クエリで、その値を文字にキャストし、先頭の「0」文字で埋めることもできます。
SELECT LPAD(country_id, 4, '0') AS country_id
ただし、数値ではなく文字タイプが返されることに注意してください。