2016-11-17 10 views
0

2つの列IDを連結して、ダッシュと最初の2文字を削除し、返される桁数を定義します。1列を連結、置換、埋め込む方法

Po_no値が18-29201-202

Line_no値は6である(ID 006としてこれを返したい)

IDこの29201202006

で終わるのが好き今、私はそれらを組み合わせて、これでダッシュを取り除いています:

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

どのように私もpo_noの最初の2桁を削除してもline_noは、常に3桁の長さであることを確認することができます:?の結果

+0

Um ..あなたはMS SQL Server _and_ MySQLをタグ付けしました。どちらですか? –

+2

ここに6を埋め込む方法はありますかhttp://stackoverflow.com/a/16760967/215752 – Hogan

+1

Po_noは常に同じ文字数ですか?そうなら、 'RIGHT()' – Hogan

答えて

1

基本的に2つの部分を連結したい場合は、修正されたPOと行を標準形式で連結します。あなたは本当に近いですが、両方の作品の数式は少しです。

replace(oe_hdr.po_no, '-', '')は正しいですが、唯一の右の8桁の数字がない場合、あなたは、このような最初の発見など、より複雑な何かをする必要があります(あなたのPO形式は常に一貫していると仮定してほしい - 、およびmid()/substr()を取って「」システムによって異なります)。要するに、あなたは実際には次を探している:

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

第二部では、文字列につながる0を追加する最も簡単な方法は、しかし、多くの0年代の連結によってあるright()によって必要と続くことができ目的の文字列の長さに:

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

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

は、あなたの完全な文字列を取得するためにこれら二つを組み合わせることができます

+0

Perfectを使うことができます。ありがとうFrtiz – eggwhites

関連する問題