我目前正試圖找出一種方法來輸出包含任何西里爾(或非拉丁-1 )字母,不管他們在什麼列 我已經繼承了一個腳本,它使用遊標遍歷表和列,並通過使用unistr()的正則表達式來搜索西里爾文的跡象,但我無法弄清楚爲什麼似乎對我們的Oracle12分貝工作了它不PL/SQL:通過正則表達式查找所有西里爾(或非latin1)標誌
聲明如下:
stmt := 'select ID from '||table_name || ' where regexp_LIKE('||table_name||'.'||column_name||','||stmt_template|| ')';
表名和列名應selft EXP 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'')||'']*$'')';
這是應該尋找的西裏爾字母和其它特殊的一個長長的清單個字符,但它拋出我下面的:
ORA-00936: missing expression
我已經嘗試不使用
stmt_template VARCHAR(32767) :='''[^-~]''';
01 ASCII表中搜索一切
不過這似乎並沒有給我測試元組我準備(使用某些西裏爾字母,以及一個€標誌之類的東西),但不包含任何「非法」字符的一些行
stmt_template VARCHAR(32767) := '''[^.' || CHR (1) || '-' || CHR (255) || ']''';
不起作用,因爲它給我與上面相同
任何人都可以幫助我找出我的錯誤/錯字或任何第一正則表達式中的錯誤嗎?
如果您需要了解更多信息,請告訴我,THX提前
哦,thx,實際上早些修正了,但後來它仍然給我一樣的錯誤,會編輯帖子! – DasGensu