2017-10-28 61 views
0

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

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

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

任何人都可以为我推荐上述查询的最佳解决方案。

+2

编辑你的问题,显示样本值,你想他们是什么。 –

+0

输出结果应该如' 'Beaverton' 'London' 'Philadelphia'' ?即之前有5个空间,城市名称填充为20个字符? –

+0

city_name没有像它可能是(伦敦,美国,英格兰,意大利)任何定义的大小,所以,在埃夫里城市名称之前,我需要添加4个空格。稍后我需要在city_name后面添加5个空白区域。 – neha

回答

1

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

使用本

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

我看到你在你表达想垫'0'秒 - lpad('',5,0)

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

lpad(0,5,0) 
1

的文档,奇怪的是,并没有说明是什么LPAD的返回值是当第一个参数是null。正如你发现的那样,在这种情况下,退货是null

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

正如Kaushik Nayak在另一个答案中显示的那样,生成五个空格字符串的正确方法是:lpad(' ', 5)。第三个参数的默认值是空格,所以你不需要添加它。

然而,对于整个查询的最简单的答案是LPAD RPAD的结果,就像这样:

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

现在的城市名称是正确的填充长度20,结果得到五个空格前缀(使长度从20增加到25)。

为了使它更容易为以后的开发人员,你甚至可以写20 + 5,而不是25 - 以明确的意图是五个字符(默认情况下是空格)添加到左边(大号垫) RPAD的结果。

+0

感谢您的答复..this方法有助于解决我的查询 – neha

+0

@neha ...有一种特殊的方式对计算器说[感谢](https://meta.stackexchange.com/a/5235)。 – Parfait

0

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

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