私は、PL/SQL経由でのアプローチを好むが、あなたのタグ内のみ 'SQL' ので、私はこのモンスターを作っなります
with t as (
select 123 as id, 3 as pos, 'q' as new_char from dual
union all
select 123 as id, 6 as pos, 'z' as new_char from dual
union all
select 123 as id, 9 as pos, '1' as new_char from dual
union all
select 456 as id, 1 as pos, 'A' as new_char from dual
union all
select 456 as id, 4 as pos, 'Z' as new_char from dual
),
t1 as (
select 123 as id, 'Becirovic' as str from dual
union all
select 456 as id, 'Test' as str from dual
)
select listagg(out_text) within group (order by pos)
from(
select id, pos, new_char, str, prev, substr(str,prev,pos-prev)||new_char as out_text
from(
select id, pos, new_char, str, nvl(lag(pos) over (partition by id order by pos)+1,1) as prev
from (
select t.id, pos, new_char, str
from t, t1
where t.id = t1.id
) q
) a
) w
group by id
結果:
Beqirzvi1
AesZ
私はあなたが適用されるすべての置換ルールを単一のレコードにあなたの文字列を取得する必要があると思い、これを行うのいずれかのチャンスがあると思う(中2上のあなたの例)。私はこれを行う方法が表示されません。この問題がどのようにして終わったのか聞いてもらえますか? –
私は最良の方法は機能だろうと思う。環境内で関数を作成できますか? – pOrinG
@TimBiegeleisenテーブルに参加し、 'group by'を追加し、' LISTAGG() '関数を追加します(MySQLの場合はGROUP_CONCATです)。グループメンバーを注文し、複数の部分を持つように文字列をカットする必要があります。うまくいくはずですが、クエリは難しいでしょう。簡単に関数を導入できます。 – StanislavL