sql语句中查询某字段不含某字符的写法

比如 表 a 有字段 姓名 单位 职务 职称 (职务一般是院长 校长 主任 处长 职称有教授 副教授 但是数据录入的时候没有录入规范,职务 职称 混淆了 有的职务写的是教授 有的职称写的是院长)要达到的目的是 职称和职称中 不含 院长 校长 主任 处长的所有记录 不知道怎么写 我用 not like "*院长* " and not like "*校长* " 但是达不到效果
最新回答
一枕庭前雪

2024-10-30 09:22:30

1、创建测试表,

create table test_users(name varchar2(20), zw varchar2(20), zc varchar2(20));

2、插入测试数据

insert into test_users values('王XX','校长','');

insert into test_users values('陈XX','','院长');

insert into test_users values('张XX','','教授');

insert into test_users values('李XX','主任','');

insert into test_users values('吴XX','','处长');

insert into test_users values('段XX','','副教授');

commit;

3、查询表中全量数据,select t.*, rowid from test_users t;

4、编写语句,查询职称和职称中不含院长、校长、主任、处长的所有记录;

   select t.*  from test_users t where not regexp_like(zw||zc,'院长|校长|主任|处长');

真相是假

2024-10-30 10:42:59

SELECT wenzhang.姓名, wenzhang.职务, wenzhang.职称, wenzhang.单位, wenzhang.邮编
FROM wenzhang
WHERE ((wenzhang.职务 is null and wenzhang.职称 is null) or (([wenzhang].[职称] & [wenzhang].[职务]) Not Like "*校长*" And ([wenzhang].[职称] & [wenzhang].[职务]) Not Like "*院长*" And ([wenzhang].[职称] & [wenzhang].[职务]) Not Like "*主任*" And ([wenzhang].[职称] & [wenzhang].[职务]) Not Like "*书记*" And ([wenzhang].[职称] & [wenzhang].[职务]) Not Like "*处长*" And ([wenzhang].[职称] & [wenzhang].[职务]) Not Like "*所长*"))
草莓少女自然甜

2024-10-30 09:15:41

可以用not in某个范围来查询。
另外,看看是不是*前后加入了多余的空格,或者数据库用的中文编码跟查询环境用的中文编码方式不一致。

在我这里,用access,这样的查询没有问题的:
SELECT 姓名, 职务, 职称
FROM 普通老师 where 职务 not like "*院长*" and 职务 not like "*校长*";
人命薄

2024-10-30 08:47:38

select * from a
where trim(a.column) not in ('院长','校长','主任',‘处长’)
肆无忌惮的思念

2024-10-30 08:40:32

update a set 职称 is null
where 职称 in( 院长 ,校长, 主任, 处长)