SQLでは、LPAD()
文字列の左側を指定された文字で埋める、一般的に使用される関数です。この関数は文字列と数値に使用できますが、DBMSによっては、数値をパディングする前に文字列として渡す必要がある場合があります。
LPAD()
を持つDBMS 関数には、MySQL、MariaDB、PostgreSQL、およびOracleが含まれます。
しないDBMS LPAD()
があります 関数にはSQLServerとSQLiteが含まれます(ただし、これらのDBMSで左パディングを適用する方法は他にもあります)。
例
LPAD()
の使用方法を示す例を次に示します。 SQLコード内:
SELECT LPAD('Look Left', 20);
結果:
+-----------------------+ | LPAD('Look Left', 20) | +-----------------------+ | Look Left | +-----------------------+
この例では、文字列の左側にスペース(デフォルトの埋め込み文字)が埋め込まれ、結果の文字列の長さは20文字になります(20
を指定したため) 2番目の引数として)。
Oracleも同じように機能しますが、FROM DUAL
を使用する必要があります このようなクエリを実行する場合(実際のテーブルをクエリせずに):
SELECT LPAD('Look Left', 20)
FROM DUAL;
結果:
LPAD('LOOKLEFT',20) _______________________ Look Left
パディング文字を指定
パディングは必ずしもスペースである必要はありません。オプションで、3番目の引数を追加して、パディングで使用する1つまたは複数の文字を指定できます。
SELECT LPAD('7', 3, '0');
結果:
007
この場合、数値にゼロを埋め込みました。実際、この例では数値を文字列として渡しました。
一部のDBMS(MariaDBやMySQLなど)では、数値を数値として渡すことができます。また、数値を埋めるために次のように渡すことができます。
SELECT LPAD(7, 3, 0);
結果:
007
Oracleでもこれを行うことができます:
SELECT LPAD(7, 3, 0)
FROM DUAL;
結果:
007
しかし、PostgreSQLにはこれに関する問題があります:
SELECT LPAD(7, 3, 0);
結果:
ERROR: function lpad(integer, integer, integer) does not exist
SQL Server
SQLServerにはLPAD()
がありません 関数ですが、FORMAT()
があります 先行ゼロで数値を埋めることができる関数:
SELECT FORMAT(7, '000');
結果:
007
それが機能する方法は、数値に続いてフォーマット文字列を渡すことです。上記の例では、フォーマット文字列は000
です。 。これは、結果が3桁で構成されるように、元の数値が埋め込まれるカスタム数値形式の文字列です。元の数値にまだ3桁が含まれていない場合は、ゼロが埋め込まれます。
SQL Serverに文字列を残すには、次のようにします。
SELECT RIGHT('.......' + 'Cat', 7);
結果:
....Cat
SQL Serverには他にもLPAD()に相当するものがいくつかあります。