2016-11-17 76 views
0

所以我有两列像Id连接在一起,有破折号和前两个字符删除,以及定义返回的位数。如何concat,替换,并填充一列

Po_no值为18-29201-202

LINE_NO值是6(Id喜欢返回此为006)

标识想用这种29201202006

落得现在我正在合并它们并用此删除破折号:

concat(replace(oe_hdr.po_no, '-', ''), job_price_line.line_no) as [PO and LINe NO], 

有了结果:

18292012026 

我怎么也删除po_no的前两位,并确保LINE_NO永远是三位数?

+0

你已经标记了MS SQL Server _and_ MySQL。这是什么。 –

+2

这里是你如何填写6 http://stackoverflow.com/a/16760967/215752 – Hogan

+1

是Po_no总是有多少个字符?如果是这样你可以使用'RIGHT()' – Hogan

回答

1

你想要连接两个基本上,修改后的PO和标准格式的行。你已经非常接近了,但是你的配方都有点偏离。

replace(oe_hdr.po_no, '-', '')是正确的,但你只需要正确的8位数假设你的PO格式始终是一致的(如果不是,你需要更复杂的东西,如发现第一个“ - ”,并采取mid()/substr()取决于系统)。总之,你实际上是在寻找以下:

right(replace(oe_hdr.po_no, '-', ''),8)

在第二部分,以领先的0添加到字符串的最简单方法是无论多少0的串联可能需要随后是right()到所需的字符串长度:

Right(concat("000",job_price_line.line_no),3)

你可以组合这两个让你完整的字符串:

concat(
    right(replace(oe_hdr.po_no, '-', ''),8), 
    right(concat("000",job_price_line.line_no),3) 
    ) 
+0

完美。谢谢Frtiz – eggwhites