2013-04-26 2 views
2

Благодаря интерфейсу с банком мне нужно разобраться некоторые нежелательные символы из поля имени:регулярное выражение Oracle сортировки специальных символов и чешских символов

Это допустимый диапазон: 0 - 9, а - z, A - Z,/-?(). , '+ (пробел) - но не допустили чешских символов

Я пробовал что-то подобное, получая нежелательные удары на несколько периодов. и пробелы, но не попадающие на него 100%:

SELECT CASE 
      WHEN REGEXP_LIKE (name, 
          '^([0-9a-zA-Z]* *+(|_|\-|\.))') 
      THEN 
      'true' 
      ELSE 
      'false' 
     END AS tmp, avt.* 
    FROM amcbankvendtable avt 

Кроме того, я все еще не имел удаленных чешских символов. Я знаю, что класс параметров параметров ==a== дает ä, но в этом случае я хочу обратное, не разрешать ûü, но только u. (В основном разрешить только английский альпабет).

Итак:

  • 123456abc нормально

  • 123û не в порядке

  • 123 # & не в порядке (# & не допускаются символы)

Есть идеи?

ответ

0

Вы можете использовать выражение типа:

[^0-9a-zA-Z/?().,' +-] 

Если он соответствует, чем есть что-то, что не разрешено.

+0

ложные \t InteleSMS AS ложной \t Protego AS истинной \t MORAVIAPRESS А.С. true \t AB Объект a.s. приближается. WHEN REGEXP_LIKE (имя, '[^ 0-9a-zA-Z /?().,+-]') почему становится истинным в двух последних случаях, из-за двух периодов:. – Trond

+0

@Trond - потому что Qtax забыл добавить символ пробела внутри скобок. –

+0

Да, пространство делает трюк, спасибо. – Trond