2017-10-15 83 views
0

我正在使用Oracle數據庫中的「lives」工具(介意我可憐的英語)。在表中查找非拉丁字符(Oracle)

我使用的查詢是:

select * from table_name 
where field_name not like '%[a-z]%' 

我也試過:

select * from table_name 
where field_name not like '%[0-9]%' 

回答

-2

嘗試的not likelike來代替:

SELECT * 
FROM table_name 
WHERE field_name LIKE '%[^a-Z0-9]%' 

^表示否定的。

+1

'LIKE'不支持正則表達式。 – MT0

+1

這顯然是錯誤的。我不明白爲什麼這被認爲是一個「工作答案」 –

0

由於沒有使用正則表達式,您所提供的查詢將無法正常工作。

所以我必須做的,以實現我的目標是:

  1. select column_name from table_name
  2. 複製的結果,一個記事本++窗口
  3. 執行在以下Find命令「查找內容」字段:[^A-za-z0-9/\\-?:().,'+ ] ,選擇「正則表達式」

它確實返回帶有非拉丁字符的字段。

0

你想用REGEXP_LIKE

SELECT COLUMN_NAME 
FROM TABLE_NAME 
WHERE REGEXP_LIKE(COLUMN_NAME, '[^A-Za-z0-9/\\-?:().,''+ ]'); 

或:

SELECT COLUMN_NAME 
FROM TABLE_NAME 
WHERE REGEXP_LIKE(
     COLUMN_NAME, 
     '[^'       -- Match any character that is not: 
     || CHR(9)      -- Horizontal Tab 
     || CHR(10)      -- Line Feed 
     || CHR(13)      -- Carriage Return 
     || CHR(32) || '-' || CHR(126) -- All characters from Space to Tilde 
     || ']' 
     );