一部のRDBMSは、LPAD()
を提供します およびRPAD()
文字列を左パッドまたは右パッドできるようにする関数。一部の関数では、先頭または末尾のゼロ番号を追加することもできます。
以下は、より一般的なRDBMSのいくつかにSQLパディングを適用する例です。
Oracle
オラクルはLPAD()
を提供しています およびRPAD()
特に文字列の左または右の部分をパディングする場合:
SELECT LPAD('Cat', 20)
FROM DUAL;
結果:
LPAD('CAT',20) _______________________ Cat
この場合、LPAD()
を使用しました 左パディングを適用すると、結果の文字列は20文字になります。これは、2番目の引数に使用したものだからです。
結果はスペースで埋められます。これは、スペースがパディングに使用されるデフォルトの文字であるためです。文字列を埋める文字を指定しない場合は、スペースが使用されます。
3番目の文字を追加して、パディングに使用する文字を指定できます。
SELECT LPAD('7', 3, '0')
FROM DUAL;
結果:
LPAD('7',3,'0') __________________ 007
この場合、数値にゼロを埋め込みました(ただし、結果は文字列になります)。
OracleにはTO_CHAR(number)
もあります 数値に先行ゼロを追加するために使用できる関数:
SELECT TO_CHAR(7, 'fm000')
FROM DUAL;
結果:
007
0
format要素は、元の番号の各桁を表し、元の番号のその位置に桁が存在しない場合はゼロを表します。
PostgreSQL
PostgreSQLには独自のLPAD()
もあります およびRPAD()
機能:
SELECT
LPAD('7', 3, '0') AS "Left Padding",
RPAD('7', 3, '0') AS "Right Padding",
LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";
結果:
Left Padding | Right Padding | Both --------------+---------------+------- 007 | 700 | 00700
また、独自のTO_CHAR()
もあります 同じ名前のOracleの関数とほとんど同じように機能する関数:
SELECT TO_CHAR(7, 'fm000');
結果:
007
MariaDB
MariaDBには独自のLPAD()
があります およびRPAD()
機能:
SELECT
LPAD('7', 3, '0') AS "Left Padding",
RPAD('7', 3, '0') AS "Right Padding",
LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";
結果:
+--------------+---------------+-------+ | Left Padding | Right Padding | Both | +--------------+---------------+-------+ | 007 | 700 | 00700 | +--------------+---------------+-------+
そして、MariaDBには独自のTO_CHAR()
があります 関数、数値では機能しません(日時の値に制限されます)。
MySQL
MySQLには独自のLPAD()
もあります およびRPAD()
機能。
LPAD()
の使用例を次に示します。 データベース列に対して:
SELECT Genre, LPAD(Genre, 10, '.')
FROM Genres;
結果:
+---------+----------------------+ | Genre | LPAD(Genre, 10, '.') | +---------+----------------------+ | Rock | ......Rock | | Jazz | ......Jazz | | Country | ...Country | | Pop | .......Pop | | Blues | .....Blues | | Hip Hop | ...Hip Hop | | Rap | .......Rap | | Punk | ......Punk | +---------+----------------------+
SQL Server
SQL Serverは、LPAD()
がないという点で少し異常です。 またはRPAD()
機能。
ただし、SQLServerにはFORMAT()
があります 先行ゼロで数値を簡単に埋めることができる関数:
SELECT FORMAT(7, '000');
結果:
007
2番目の引数は、結果の文字列の文字数を決定するカスタム数値形式の文字列です。ゼロを使用したという事実は、必要に応じて結果に先行ゼロが含まれることを意味します。
SQL Serverで文字列を埋めるには、次のようにします。
SELECT RIGHT('.......' + 'Cat', 7);
結果:
....Cat
SQLServerでパディングを適用するために使用できる他のさまざまな手法があります。