遭遇する可能性のある最も一般的なクリーンでないデータの 1 つは、数値データまたは文字列データの先頭にゼロが含まれるデータです。これは、外部ソースからデータをインポートするとき、または自動データ収集技術を使用するときに発生する可能性があります。
データ内の先頭のゼロは、特に文字列として保存されている数値を扱う場合に問題となる可能性があります。
このガイドでは、SQL データセット内の先頭のゼロを削除するために使用できるすべての方法とテクニックについて説明します。
サンプルデータのセットアップ
アプリケーションと例に入る前に、先行ゼロの発生を実証するのに役立つ基本的なデータセットを設定することから始めましょう。
次のようなデータを含む従業員のテーブルについて考えてみましょう。
CREATE TABLE 従業員 (
従業員ID VARCHAR(10)
);
従業員 (従業員 ID) の値に挿入
('00123')、
('00456')、
('00789')、
('01012')、
('01567');
この場合、従業員 ID は「varchar」タイプになります。ただし、値には先頭にゼロが含まれます。
これらの先頭のゼロを削除するために使用できる方法を調べてみましょう。
CAST関数の使用
先頭のゼロを削除する方法の 1 つは、文字列を数値型に変換することです。次の例に示すように、CAST や CONVERT() などの関数を使用できます。
SELECT CAST(EmployeeID AS INT) AS EmployeeIDWithoutZeros従業員から;
これは、cast() 関数をサポートするデータベースでは自動的に機能します。
ただし、MySQL などのデータベースでは、実際に先頭のゼロを削除するために関数を Trim 関数に移植する必要がある場合があります。次に、次の例に示すように、値を数値型に変換できます。
SELECT CAST(TRIM(LEADING '0' FROM EmployeeID) AS SIGNED) AS EmployeeIDWithoutZeros従業員から;
結果の出力は次のようになります。
LTRIM 関数の使用
先頭のゼロを削除するために使用できる最も一般的で強力な方法は、LTRIM() 関数を使用することです。この関数を使用すると、特定の文字列内の先頭の空白文字を削除できます。
ただし、削除したい特定の文字を指定することはできません。この例では、文字列から先頭のゼロを削除することでこれを使用できます。
例は次のとおりです。
SELECT LTRIM(従業員ID, '0') AS EmployeeIDWithoutZeros従業員から;
これにより、文字列から先頭のゼロ文字が削除されるはずです。
結論
このチュートリアルでは、特定の文字列/列から先頭のゼロ文字を削除するために使用できる 2 つの主な方法を検討しました。