LOCATE を使用して CLOB フィールドをクエリすると、小さな問題が発生します。
CLOB 内で特定の名前を検索していますが、検索文字列にスペースを追加するとすぐに 0 インデックスが返されます。
作業コード:
select count(REFERENCE_#) AS AssignCount
from ARADMIN.SRMIS_REQUEST
where DATE_OCCURRED_DT is not null
and (DATE_OCCURRED_DT >= add_months(sysdate, -12) )
and ({FN LOCATE('INFO-MGMT-SRVCS.R3', "SRMIS_REQUEST"."TRACE_LOG")} > 0)
動かないコード:
select count(REFERENCE_#) AS AssignCount
from ARADMIN.SRMIS_REQUEST
where DATE_OCCURRED_DT is not null and trim(DATE_OCCURRED_DT) != ''
and (DATE_OCCURRED_DT >= add_months(sysdate, -12) )
and ({FN LOCATE('The problem has been assigned to INFO-MGMT-SRVCS.R3', "SRMIS_REQUEST"."TRACE_LOG")} > 0)
"SRMIS_REQUEST"."TRACE_LOG" をクエリし、スペースを含む文字列を where 句に直接コピーしてテストしました。
Oracle のドキュメントには、スペースが許可されている場所と許可されていない場所は記載されていません。
2 番目のクエリの何が問題になっていますか?
編集:instr()
insetad of
を使用するようにクエリを変更しましたがLOCATE()
、動作します。