DB2バージョン10.5を使用しています。私は、私がやろうとしている他のいくつかのクエリに影響を与えている悪いxmlデータを持つ少なくとも1つの行があることを知っているデータベーステーブルを持っています。行の1つに#x1A文字が含まれています。私はそれらに無効なxml文字[#x0E-#x1F]を持つすべての行を与えるクエリを実行する方法を見つけようとしています。以下は私が試したいくつかの試みですが、うまくいかないものです。16進数値のDB2クエリー
SELECT
e.EMLNAME
FROM MYDB.EMPLOYEE e
WHERE
-- [#x0E-#x1F]
/*
e.EMLNAME like '%#x0E%'
OR e.EMLNAME like '%#x0F%'
OR e.EMLNAME like '%#x10%'
OR e.EMLNAME like '%#x11%'
OR e.EMLNAME like '%#x12%'
OR e.EMLNAME like '%#x13%'
OR e.EMLNAME like '%#x14%'
OR e.EMLNAME like '%#x15%'
OR e.EMLNAME like '%#x16%'
OR e.EMLNAME like '%#x17%'
OR e.EMLNAME like '%#x18%'
OR e.EMLNAME like '%#x19%'
OR e.EMLNAME like '%#x1A%'
OR e.EMLNAME like '%#x1B%'
OR e.EMLNAME like '%#x1C%'
OR e.EMLNAME like '%#x1D%'
OR e.EMLNAME like '%#x1E%'
OR e.EMLNAME like '%#x1F%';
e.EMLNAME like '%\x0E%'
OR e.EMLNAME like '%\x0F%'
OR e.EMLNAME like '%\x10%'
OR e.EMLNAME like '%\x11%'
OR e.EMLNAME like '%\x12%'
OR e.EMLNAME like '%\x13%'
OR e.EMLNAME like '%\x14%'
OR e.EMLNAME like '%\x15%'
OR e.EMLNAME like '%\x16%'
OR e.EMLNAME like '%\x17%'
OR e.EMLNAME like '%\x18%'
OR e.EMLNAME like '%\x19%'
OR e.EMLNAME like '%\x1A%'
OR e.EMLNAME like '%\x1B%'
OR e.EMLNAME like '%\x1C%'
OR e.EMLNAME like '%\x1D%'
OR e.EMLNAME like '%\x1E%'
OR e.EMLNAME like '%\x1F%';
e.EMLNAME like '%\0x0E%'
OR e.EMLNAME like '%\0x0F%'
OR e.EMLNAME like '%\0x10%'
OR e.EMLNAME like '%\0x11%'
OR e.EMLNAME like '%\0x12%'
OR e.EMLNAME like '%\0x13%'
OR e.EMLNAME like '%\0x14%'
OR e.EMLNAME like '%\0x15%'
OR e.EMLNAME like '%\0x16%'
OR e.EMLNAME like '%\0x17%'
OR e.EMLNAME like '%\0x18%'
OR e.EMLNAME like '%\0x19%'
OR e.EMLNAME like '%\0x1A%'
OR e.EMLNAME like '%\0x1B%'
OR e.EMLNAME like '%\0x1C%'
OR e.EMLNAME like '%\0x1D%'
OR e.EMLNAME like '%\0x1E%'
OR e.EMLNAME like '%\0x1F%';
*/
e.EMLNAME like '%0x0E%'
OR e.EMLNAME like '%0x0F%'
OR e.EMLNAME like '%0x10%'
OR e.EMLNAME like '%0x11%'
OR e.EMLNAME like '%0x12%'
OR e.EMLNAME like '%0x13%'
OR e.EMLNAME like '%0x14%'
OR e.EMLNAME like '%0x15%'
OR e.EMLNAME like '%0x16%'
OR e.EMLNAME like '%0x17%'
OR e.EMLNAME like '%0x18%'
OR e.EMLNAME like '%0x19%'
OR e.EMLNAME like '%0x1A%'
OR e.EMLNAME like '%0x1B%'
OR e.EMLNAME like '%0x1C%'
OR e.EMLNAME like '%0x1D%'
OR e.EMLNAME like '%0x1E%'
OR e.EMLNAME like '%0x1F%';
どのように16進値を問い合わせることができるかについての指針はありますか?私は範囲を行う方法を知らないので、個々の16進値を個別に実行しようとしました。範囲を実行する方法がある場合、これはさらに優れた解決策になります。
最近のバージョンでは、単一の検索における文字の範囲(複数可)またはセット(S)を検索できるようになりREGEXP_LIKE()関数を持っています。 – WarrenT
見つけたら何をするつもりですか? '単にMYDB.EMPLOYEE set e.EMLNAME = translate(e.EMLNAME、 ''、x'1a ')'を更新するだけでいいですか? – mustaccio
@mustaccio、悪いデータを示すレポートを作成する予定です。私の推測では、ビジネスは最終的に悪い文字が ''の代わりに削除されることを望んでいるということです。 –