使用Lpad和Rpad进行oracle查询

时间:2017-10-28 15:11:55

标签: sql oracle oracle11g

我想连接字符串左侧和右侧的空白值。我正在使用lpad和rpad命令并连接它们但我无法将空白值连接到左侧。以下示例查询:

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

输出:Beaverton-11空格连接在一起。

任何人都可以建议我上述查询的最佳解决方案。

3 个答案:

答案 0 :(得分:1)

  

我想连接a左侧和右侧的空白值   字符串。

使用此

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

我发现您正试图在表达式'0'中填充lpad('',5,0)

如果这是你想要的,你可以使用

lpad(0,5,0)

答案 1 :(得分:1)

奇怪的是,文档没有说明当第一个参数为null时LPAD的返回值是什么。如您所知,在这种情况下,返回值为null

第三个参数必须是某些字符数据类型。你正在传递0,Oracle会将兄弟big转换为字符串'0'。但这不是你想要的。

生成五个空格的正确方法是,正如Kaushik Nayak在另一个答案中所示:lpad(' ', 5)。第三个参数的默认值是空格,因此您无需添加它。

但是,对于整个查询,最简单的答案是lpad rpad的结果,如下所示:

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

现在城市名称右边填充到长度为20,结果前面有五个空格(使长度从20增加到25)。

为了让未来的开发人员更容易,您甚至可以编写20 + 5而不是25 - 以明确意图是在左侧添加另外五个字符(默认为空格)( L pad)RPAD的结果。

答案 2 :(得分:0)

据我所知,您需要在城市名称前使用4个空格,在城市名称后使用5个空格,因此您可以使用以下内容;使用以下代码

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