STRINGの問題が少しありました。ご協力いただきありがとうございます。 STRING_1の文字をSTRING_2と比較したい場合は、一致する文字がSTRING_2から削除されます。 (‘MICROSOFT’
は一‘M’
一‘S’
が含まれる)、例えばOracle - STRING_1にある文字をSTRING_1から削除します。
は、STRING_1は‘MICROSOFT’
の値を含む、STRING_2は‘MSS’
の値が含まれ、Iは、したがって結果のよう‘S’
として表示することになります。 STRING_1の値が‘MISS’
、STRING_2の値が‘MISS’
の場合、結果はNULL
と表示されます。
しかし、私が使用しているクエリでは、目的の結果が得られていません。 (STRING_1 = ‘MICROSOFT’
、STRING_2 = ‘MSS’
)上記と同じ例を使用して、出力が‘MICROSOFT’
から‘S’
値が‘MSS’
に‘S’
値の両方のインスタンスを削除して、NULL
であり、私はそれのようのみ‘MSS’
から‘S’
値のいずれかを除去することになります。
以下は、使用しているクエリの例です。私はこの明確に十分に説明していませんでした場合
WITH
TABLE_1 AS (SELECT 'ADVANCED' AS STRING_1,
'ANNA' AS STRING_2
FROM DUAL
UNION
SELECT 'MICROSOFT' AS STRING_1,
'MSS' AS STRING_2
FROM DUAL
UNION
SELECT 'MICROSOFT' AS STRING_1,
'MSOFT' AS STRING_2
FROM DUAL
UNION
SELECT 'MISS' AS STRING_1,
'MISS' AS STRING_2
FROM DUAL)
SELECT T1.*,
REGEXP_REPLACE(TRANSLATE(T1.STRING_2,T1.STRING_1,RPAD(' ',LENGTH(T1.STRING_2))),'[[:space:]]','') AS RESULT
FROM TABLE_1 T1
の実績
望ましい結果
謝罪 - あなたがいずれかを必要とするなら、私に知らせて自由に感じます詳しくは。
ご協力いただければ幸いです。
事前に感謝します。
私はこれを処理するためにいくつかの動的SQLが必要になると思います。 –
私はPL/SQL関数 'remove(string1、string2)'を作成すると言っていますが、「純粋なSQLで行う必要があります」と回答しています: –
@TonyAndrewsはい、関連:https:// stackoverflow .com/questions/40502739/how-to-get-exact-character-diff-between-two-string-in-sql – Abra001