SQL语句约束问题求教。。

新建一表,要使一字段中不出现I、i、O、o、Q、q,以下写法有什么问题吗。。。
X char(17) check (X not like'%I%i%O%o%Q%q');
如果有的话还请指正,不胜感激。

楼上的逻辑有问题,首先分开是对的,但应该是用and。几个字符都不允许出现的。
(X not like '%I%') and (X not like '%i%') and (X not like '%O%') ...

(X not like '%I%') or
(X not like '%i%') or
……
每个字母要单独分开来写

你的这个一串'%I%i%O%o%Q%q'写成这样是有问题的吧

用INSTR看是否存在那些字符,效率更高。
不过,这样进行约束是很不适当的。
应该在存数据之前判断,有就不存入。