私は分割する必要のある情報を持つフィールドFARMBOLを持っています。 フィールドのある時点では、「IMPORTER:」と表示され、さらに詳しい情報が表示されます。別としてOracle SQLの部分文字列の前後にすべてを抽出する必要があります
すなわち、「20394823409輸入業者:ジョン・ドウ」
私は1つのフィールドとして「20394823409」を抽出する必要がある、と「ジョン・ドウ輸入」。これどうやってするの?このコードは、Oracle DB上のSSRSのクエリの一部です。
私は分割する必要のある情報を持つフィールドFARMBOLを持っています。 フィールドのある時点では、「IMPORTER:」と表示され、さらに詳しい情報が表示されます。別としてOracle SQLの部分文字列の前後にすべてを抽出する必要があります
すなわち、「20394823409輸入業者:ジョン・ドウ」
私は1つのフィールドとして「20394823409」を抽出する必要がある、と「ジョン・ドウ輸入」。これどうやってするの?このコードは、Oracle DB上のSSRSのクエリの一部です。
それは本当に常に「輸入業者:」言う場合は取得するためにどのくらい把握し、その後あなたは、サブ文字列を取得するためにsubstr()
を使用することができ、かつinstr()
を:
with t (farmbol) as (select '20394823409 IMPORTER: John Doe' from dual)
select substr(farmbol, 1, instr(farmbol, 'IMPORTER:') - 1) as part1,
substr(farmbol, instr(farmbol, 'IMPORTER:')) as part2
from t;
PART1 PART2
------------ ------------------
20394823409 IMPORTER: John Doe
あなたが抽出された値を操作することができ、例えば最初の部分から末尾のスペースをトリミングする、またはそれが常になる場合数に変換:
with t (farmbol) as (select '20394823409 IMPORTER: John Doe' from dual)
select substr(farmbol, 1, instr(farmbol, 'IMPORTER:') - 1) as part1,
trim(substr(farmbol, 1, instr(farmbol, 'IMPORTER:') - 1)) as part1_trim,
cast(substr(farmbol, 1, instr(farmbol, 'IMPORTER:') - 1) as number) as part1_num,
substr(farmbol, instr(farmbol, 'IMPORTER:')) as part2
from t;
PART1 PART1_TRIM PART1_NUM PART2
------------ ----------- ------------ ------------------
20394823409 20394823409 20394823409 IMPORTER: John Doe
そして、あなたは本当に「IMPORTER:」保持しない場合は、調整することができ、文字列の一部をその固定値の長さによって、第2のサブストリングの開始位置は、:あなたは、より柔軟なパターンを必要に応じて
with t (farmbol) as (select '20394823409 IMPORTER: John Doe' from dual)
select cast(substr(farmbol, 1, instr(farmbol, 'IMPORTER:') - 1) as number) as part1_num,
trim(substr(farmbol, instr(farmbol, 'IMPORTER:') + 9)) as importer
from t;
PART1_NUM IMPORTER
------------ --------
20394823409 John Doe
、あなたではなく、正規表現を使用することができますが、それはやり過ぎ、ここのように思えます。
これを行うことは、実際にこのデータを別々の列に格納することを示唆しています。単一の文字列でマッシュさせるのではなく、異なるデータ型で開始することがあります。
ブーム。ありがとう。 –
実装するロジックは何ですか?最初の列の最初のスペースまで、そして最初のスペースの後のすべてを2番目のスペースとして読み上げますか?最初の数字以外の文字を読み込みますか?最初の列の最初のアルファベット文字の前のすべて? –
文字列の "IMPORTER"部分が列1、 "IMPORTER"とそれ以降はすべて列2になります。 –
したがって、すべての行に "IMPORTER"という文字列がありますか? –