現在、キリル文字または非ラテン1文字を含む表内のすべての行のIDを出力する方法を理解しようとしています。 )文字列に関係なく、どの列にあるのか 私は、テーブルと列を反復処理するためにカーソルを使用するスクリプトを継承し、unistr()を使って正規表現を使ってキリル文字を検索しますが、それが私たちのOracleの12デシベルにもう動作していないように見える理由PL/SQL:正規表現を介してすべてのキリル文字(または非ラテン1)を検索
文は次のとおりです。
stmt := 'select ID from '||table_name || ' where regexp_LIKE('||table_name||'.'||column_name||','||stmt_template|| ')';
TABLE_NAMEと列名は、EXPをselftする必要がありますlanatory、stmt_templateは、以前定義されたテンプレートであり、私の問題を含んでいます。次のように
OPEN stmt_cursor for stmt;
LOOP [some code]
stmt_templateが定義されているといつも私にこれは、キリル文字や特殊な他の長いリストを検索することになっている stmt_template VARCHAR(32767) := '^[''||unistr(''\20AC'')||unistr(''\1EF8'')||''-''||unistr(''\1EF9'')||unistr(''\1EF2'')||''-''||unistr(''\1EF3'')||unistr(''\1EE4'')||''-''||unistr(''\1EE5'')||unistr(''\1ED6'')||''-''||unistr(''\1ED7'')||unistr(''\1ECA'')||''-''||unistr(''\1ECF'')||unistr(''\1EC4'')||''-''||unistr(''\1EC5'')||unistr(''\1EBD'')||unistr(''\1EAA'')||''-''||unistr(''\1EAC'')||unistr(''\1EA0'')||''-''||unistr(''\1EA1'')||unistr(''\1E9E'')||unistr(''\1E9B'')||unistr(''\1E8C'')||''-''||unistr(''\1E93'')||unistr(''\1E80'')||''-''||unistr(''\1E85'')||unistr(''\1E6A'')||''-''||unistr(''\1E6B'')||unistr(''\1E60'')||''-''||unistr(''\1E63'')||unistr(''\1E56'')||''-''||unistr(''\1E57'')||unistr(''\1E44'')||''-''||unistr(''\1E45'')||unistr(''\1E40'')||''-''||unistr(''\1E41'')||unistr(''\1E30'')||''-''||unistr(''\1E31'')||unistr(''\1E24'')||''-''||unistr(''\1E27'')||unistr(''\1E1E'')||''-''||unistr(''\1E21'')||unistr(''\1E10'')||''-''||unistr(''\1E11'')||unistr(''\1E0A'')||''-''||unistr(''\1E0B'')||unistr(''\1E02'')||''-''||unistr(''\1E03'')||unistr(''\0292'')||unistr(''\0259'')||unistr(''\022A'')||''-''||unistr(''\0233'')||unistr(''\01FA'')||''-''||unistr(''\021F'')||unistr(''\01F7'')||unistr(''\01F4'')||''-''||unistr(''\01F5'')||unistr(''\01E2'')||''-''||unistr(''\01EF'')||unistr(''\01DE'')||''-''||unistr(''\01DF'')||unistr(''\01CD'')||''-''||unistr(''\01D4'')||unistr(''\01BF'')||unistr(''\01B7'')||unistr(''\01AF'')||''-''||unistr(''\01b0'')||unistr(''\01A0'')||''-''||unistr(''\01A1'')||unistr(''\018F'')||unistr(''\0187'')||''-''||unistr(''\0188'')||unistr(''\0134'')||''-''||unistr(''\017f'')||unistr(''\00AE'')||''-''||unistr(''\0131'')||unistr(''\00A1'')||''-''||unistr(''\00AC'')||unistr(''\0009'')||unistr(''\000A'')||unistr(''\000D'')||unistr(''\0020'')||''-''||unistr(''\007E'')||'']*$'')';
エラーがスローされます:「STMT」を以下の(と作品)として使用されています文字、それは次のように私をスローかかわら:
ORA-00936: missing expression
私はすでに
stmt_template VARCHAR(32767) :='''[^-~]''';
01を使用して、ASCIIテーブル内のすべてのためではありません検索しようとしましたこれは私が(いくつかのキリル文字と同様に€記号やものを使用して)作成した試験タプルが、どの「違法」文字
stmt_template VARCHAR(32767) := '''[^.' || CHR (1) || '-' || CHR (255) || ']''';
が含まれていない一部の行を与えるようには見えませんが
は、私に上記のものと同じものを与えるので、どちらもうまくいきません
私の間違い/タイプミス、または最初の正規表現でのエラーの特定に役立つ人は誰ですか?事前に
あなたはどんなより多くの情報が必要な場合は、私に教えてください、THX
ああ、thxは実際には早く修正しましたが、その後も同じエラーが表示され、投稿を編集します! – DasGensu