2016-11-17 55 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