lpadという関数をご存じでしょうか?
文字の左が一定数の「*(アスタリスク)」で埋められている文字列はSQLでもよく見かけると思います。
Oracle SQLでは当たり前のように使用されていますが、SQL Serverではlpadやrpadといった関数は実装されていません。
そこで今回の記事では、「SQL ServerでLPAD関数を使うにはどうすれば良いか?」について解説してみたいと思います。
LPAD関数とは
MySQLやOracle SQLではお馴染みの「文字列に指定文字を挿入するための関数」です。
LPAD関数は文字列の左側に、RPAD関数は文字列の右側に指定文字列を挿入することが出来ます。
残念な事にSQL ServerではLPAD関数、RPAD関数共に未実装なため、SQL Serverを使っている方は別の方法を模索して同じ作用を作り出すしかありません。
SQLでLPAD関数を使う
冒頭でも説明しているように、SQLにはLPAD関数はありません。
そこで、代わりに別の関数をいくつか使い、同じ作用を作り出します。
方法は次の通りです。
INSERT INTO sample_table(id, price, name) VALLUES(1, 3000, 'Beef Steak'); INSERT INTO sample_table(id, price, name) VALLUES(2, 500, 'Beer'); INSERT INTO sample_table(id, price, name) VALLUES(3, 1200, 'Cod Meunier'); INSERT INTO sample_table(id, price, name) VALLUES(4, 1500, 'Vegetable Curry'); INSERT INTO sample_table(id, price, name) VALLUES(5, 800, 'Cream soup'); INSERT INTO sample_table(id, price, name) VALLUES(6, 50, 'Watter'); INSERT INTO sample_table(id, price, name) VALLUES(7, 200, 'Bread'); INSERT INTO sample_table(id, price, name) VALLUES(8, 200, 'Rice'); SELECT id, name, age, RIGHT('***************' + CAST(age AS NVARCHAR), 10) AS LPAD FROM sample_table; id price name LPAD ----------- ----------- -------------------- ---------- 1 3000 Beef Steak ******3000 2 500 Beer *******500 3 1200 Cod Meunier ******1200 4 1500 Vegetable Curry ******1500 5 800 Cream soup *******800 6 50 Watter ********50 7 200 Bread *******200 8 200 Rice *******200
SQLでLPAD関数と同じ作用を作るためにはRIGHT関数とCAST関数を使います。
まずRIGHT関数の第一引数で任意の文字列を指定します。
サンプルコードでは「*(アスタリスク)」を指定しています。
次に上記で指定した文字列にCAST関数を足します。
この時、CAST関数は第一引数にアスタリスクを挿入したいカラムを指定します。
最後にRIGHT関数の第二引数に最終的な文字数を指定することで、LPAD関数と同じ作用となります。
なおRIGHT関数の第一引数で指定する文字数が、最終的に表示させたい文字数より少ない場合には文字数が揃わないことがある点に注意してください。
まとめ
いかがでしたか?
今回はSQL ServerでLPAD関数と同じ作用をいかにして作り出すかについて解説してみました。
未実装の関数と同じ作用を作り出すケースはほかにもありますので、そういった場合に柔軟に対応できるようにしっかりと学習しておきましょう。