SUBSTRING() 関数でINT型をVARCHAR型に変換する
SQLでINT型をVARCHAR型に変換する「Cast int to varchar」
SQLでINT型データをVARCHAR型に変換する方法はいくつかあります。ここでは、最も一般的な方法である CAST()
関数と CONVERT()
関数について解説します。
CAST()
関数は、データ型変換を行うための標準的な関数です。以下のように使用します。
SELECT CAST(INT_COLUMN AS VARCHAR(LENGTH));
INT_COLUMN
: 変換したいINT型カラム名VARCHAR(LENGTH)
: 変換後のVARCHAR型データ型。LENGTH
は変換後の文字列長を指定します。
例
SELECT CAST(123 AS VARCHAR(10)); -- 結果: "123"
SELECT CAST(45678 AS VARCHAR(20)); -- 結果: "45678"
CONVERT()
関数は、CAST()
関数と同様にデータ型変換を行う関数です。CAST()
関数よりも古い関数ですが、多くのデータベースでサポートされています。以下のように使用します。
SELECT CONVERT(VARCHAR(LENGTH), INT_COLUMN);
SELECT CONVERT(VARCHAR(10), 123); -- 結果: "123"
SELECT CONVERT(VARCHAR(20), 45678); -- 結果: "45678"
補足
CAST()
関数とCONVERT()
関数は、どちらも同じように使用できますが、CAST()
関数の方が新しい関数なので、一般的にはこちらを使用することをおすすめします。- 変換後の文字列長を指定しないと、INT型の最大値までの桁数で文字列が生成されます。
- 変換するINT型データにNULL値が含まれている場合、変換後のVARCHAR型データもNULL値になります。
-- テーブル作成
CREATE TABLE sample_table (
id INT,
name VARCHAR(255)
);
-- データ挿入
INSERT INTO sample_table (id, name) VALUES (1, 'John Doe');
INSERT INTO sample_table (id, name) VALUES (2, 'Jane Doe');
-- INT型データをVARCHAR型に変換
SELECT CAST(id AS VARCHAR(10)) AS id, name FROM sample_table;
-- 結果
-- id | name
-- -- | --
-- 1 | John Doe
-- 2 | Jane Doe
-- CONVERT() 関数を使用してINT型データをVARCHAR型に変換
SELECT CONVERT(VARCHAR(10), id) AS id, name FROM sample_table;
-- 結果
-- id | name
-- -- | --
-- 1 | John Doe
-- 2 | Jane Doe
その後、id
カラムに1と2の値を挿入し、CAST()
関数と CONVERT()
関数を使用してINT型データをVARCHAR型に変換しています。
結果は、どちらも id
カラムが10桁の文字列に変換されていることが確認できます。
- 文字列にゼロパディングしたい場合は、
LPAD()
関数と組み合わせることができます。
SELECT LPAD(CAST(id AS VARCHAR(10)), 10, '0') AS id, name FROM sample_table;
-- 結果
-- id | name
-- -- | --
-- 0000000001 | John Doe
-- 0000000002 | Jane Doe
SELECT CONCAT('ID:', CAST(id AS VARCHAR(10))) AS id, name FROM sample_table;
-- 結果
-- id | name
-- -- | --
-- ID:0000000001 | John Doe
-- ID:0000000002 | Jane Doe
これらの方法を組み合わせて、希望する形式に変換することができます。
INT型をVARCHAR型に変換する他の方法
文字列連結演算子 (+
) を使用して、INT型データを文字列に変換することができます。
SELECT id + '' AS id, name FROM sample_table;
-- 結果
-- id | name
-- -- | --
-- 1 | John Doe
-- 2 | Jane Doe
ただし、この方法は変換後の文字列長が不定になるため、注意が必要です。
SUBSTRING()
関数を使用して、INT型データの各桁を文字列として抽出することができます。
SELECT SUBSTRING(CAST(id AS VARCHAR(10)), 1, 1) AS first_digit,
SUBSTRING(CAST(id AS VARCHAR(10)), 2, 1) AS second_digit,
...
SUBSTRING(CAST(id AS VARCHAR(10)), 10, 1) AS last_digit
FROM sample_table;
-- 結果
-- first_digit | second_digit | ... | last_digit
-- -- | -- | -- | --
-- 1 | 2 | ... | 3
-- 4 | 5 | ... | 6
ただし、この方法は処理が複雑になるため、データ量が多い場合は効率的ではありません。
CASE
式を使用して、INT型データの値に応じて異なる文字列を返すことができます。
SELECT CASE id
WHEN 1 THEN 'One'
WHEN 2 THEN 'Two'
ELSE CAST(id AS VARCHAR(10))
END AS id, name
FROM sample_table;
-- 結果
-- id | name
-- -- | --
-- One | John Doe
-- Two | Jane Doe
INT型をVARCHAR型に変換する方法はいくつかあります。それぞれの方法にはメリットとデメリットがあるため、状況に合わせて最適な方法を選択する必要があります。
mysql sql database