2017-10-28 10 views
0

文字列の左右の空白の値を連結したいとします。私はlpadとrpadコマンドを使用してそれらを連結していますが、左側に空白の値を連結できません。以下のクエリ例:LapadとRpadを使用したOracleクエリー

select lpad('',5,0)||rpad(city_name,20) from city;  

出力:Beaverton-11空白が連結されます。

誰でも私に上記の質問に対する最善の解決策を提案することができます。

+2

編集あなたの質問やショーのサンプル値とどのようなあなたがそれらになりたい、次のコードを使用します。 –

+0

出力は ' 'ビーバートン ' 'ロンドン ' 'フィラデルフィア ' のようなものでしょうか?すなわち5桁前に、市の名前は20文字になりますか? –

+0

city_nameには(ロンドン、アメリカ、イングランド、イタリア)のように定義されたサイズがありませんので、evry city nameの前に4つの空白を追加する必要があります。後でcity_nameの後ろに5つの空白スペースを追加する必要があります。 – neha

答えて

1

文字列の左右の空白の値を連結したいとします。

使用この

select lpad(' ',5)||rpad(city_name ,20) from city; 

私はあなたの式でパッドに'0' Sをしようとしていることを確認 - lpad('',5,0)。それはあなたが望むものである場合

、あなたが

lpad(0,5,0) 
1

ドキュメントを使用することができ、奇妙なことに、最初の引数がnullときLPADの戻り値が何であるかを述べることはありません。あなたが見つけたので、その場合は返信はnullです。

第3引数は、文字データ型である必要があります。 0を渡しています.Oracleは、big-brother-rlyを文字列 '0'に変換します。とにかくそれはあなたが望むものではありません。

5つのスペースの文字列を生成する正しい方法は、Kaushik Nayakが既に別の答えで示したように、lpad(' ', 5)です。 3番目の引数のデフォルトはスペースなので、追加する必要はありません。

しかし、あなたの全体のクエリのための最も簡単な答えは、RPADの結果をLPADそうのようです:

select lpad(rpad(city_name, 20) , 25) from .... 

今都市名が長さ20に右詰めされ、その結果が先頭に付加5つのスペースを取得します(長さを20から25に増やす)。

は、あなたも25の代わりに 20 + 5を書き込むことができ、将来の開発者のためのそれを容易にするために - それは明確な意図が左( Lパッド)のに(デフォルトでは空白です)5つの以上の文字を追加した作るためにRPADの結果

+0

返答いただきありがとうございます。このメソッドは私のクエリを解決するのに役立ちました – neha

+0

@neha ... [thanks](https://meta.stackexchange.com/a/5235)をstackoverflowと言う特別な方法があります。 – Parfait

0

都市名の前に4つのスペースを使用し、都市名の後に5つのスペースを使用する必要があることを理解します。

select lpad(city_name, length(city_name)+4,' ')||rpad(' ', 4, ' ') from city;

関連する問題