文字列の左右に指定文字列を加えて桁を揃える

固定長テキストファイルを作る時便利です。

文法
LPAD ( string , length ,[paddingString] )

文字列stringの先頭から指定文字数lengthになるまで左に指定した文字paddingSringを挿入して返す。

RPAD ( string , length ,[paddingString] )

文字列stringの末尾から指定文字数lengthになるまで右に指定した文字paddingSringを追加して返す。

引数
string 文字列
length 文字列の長さ
paddingString

追加(挿入)したい文字列 (指定しない場合デフォルトは半角スペース)

使用例

select 
lpad('AAA',10)          ,
lpad('あいう9',10)      ,
rpad('AAA',10)          ,
rpad('あいう9',10,'あ') 
from dual

結果(わかりやすいように半角スペースは * に変換して表示しています)
LPAD/RPAD使用例

Imports Oracle.DataAccess.Client

Public Class frmSQL_Trim

    Private dt As DataTable = Nothing

    Private Sub InitializeGrid()

        Grid1.Splits(0).ColumnCaptionHeight = Grid1.Splits(0).ColumnCaptionHeight * 2

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       
        Try
            If TextSQL.Text.Trim.Length > 0 Then
                Using da As New OracleDataAdapter(TextSQL.Text.Trim, clsGlobal.gConnetionString)

                    dt = New DataTable
                    da.Fill(dt)

                    If CheckBox1.Checked Then
                        cnvSpace(dt)
                    End If

                    'Gridにバインド
                    Grid1.DataSource = dt
                End Using
            End If

        Catch ex As OracleException
            MessageBox.Show(ex.Message)

        End Try
    End Sub

    Private Sub cnvSpace(ByVal SourceDT As DataTable)
        Dim i As Integer
        Dim j As Integer
        Dim wkString As String = ""
        Dim wkSB As New System.Text.StringBuilder

        Try
            Dim ColCount As Integer = SourceDT.Columns.Count
            Dim drow As DataRow

            For Each drow In dt.Rows
                For i = 0 To ColCount - 1
                    If Not IsDBNull(drow.Item(i)) Then
                        wkSB.Remove(0, wkSB.Length)
                        wkString = drow.Item(i).ToString
                        For j = 0 To wkString.Length - 1
                            If wkString.Substring(j, 1) = Space(1) Then
                                wkSB.Append("*")
                            Else
                                wkSB.Append(wkString.Substring(j, 1))
                            End If
                        Next
                        drow.Item(i) = wkSB.ToString
                    End If
                Next
            Next

        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    Private Sub frmSQL_Trim_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        InitializeGrid()
    End Sub
End Class

修正履歴

Loading