在表中查找非拉丁字符(Oracle)

时间:2017-10-15 15:56:08

标签: sql oracle

与我一起工作的表格"生活"在Oracle数据库中(请注意我的英语不好)。

我使用的查询是:

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

我也尝试过:

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

3 个答案:

答案 0 :(得分:0)

您提供的查询无效,因为它不使用正则表达式。

所以我要实现的目标是:

  1. select column_name from table_name
  2. 将结果复制到记事本++窗口
  3. 执行Find命令,并在“查找内容”字段中添加以下内容:[^A-za-z0-9/\\-?:().,'+ ],选择“正则表达式”
  4. 它确实返回带有非拉丁字符的字段。

答案 1 :(得分: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
         || ']'
       );

答案 2 :(得分:-2)

尝试使用否定like代替not like

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

^表示否定。