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

哎哟,你在做什么?数据库操作?我来说说我遇到的坑吧。

今年我在上海带领一个小团队做一个项目,新来了一个小伙伴,SQL写得很好。
看看这段代码:
sql 创建表 test_users ( 名称 VARCHAR2 (2 0), 之间 VARCHAR2 (2 0), zc VARCHAR2 (2 0) );
好吧,让我们创建一个表,这没有什么问题。
然后他插入数据:
sql INSERT INTO test_users VALUES('王XX','校长',''); INSERT INTO test_users VALUES('陈某某','','院长'); 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;
我看了看然后说:“嘿,这些数据是怎么回事?” “王某某”没有职称,“陈某某”没有职称,“李某某”没有职称……这不是巧合吗?找了半天,发现业务需求没有讲清楚,卡了两天。
记住,建表、插入数据的时候一定要咨询业务人员,而不是自己摸索。

让我们再看一下这个查询:
sql SELECT t., rowid FROM test_users t;
全表查询,没问题。
关键如下:
sql 选择t。
来自 test_users t WHERE NOT REGEXP_LIKE(zw || zc, 'Dean|Principal|Director|Director');
嘿,这家伙想做什么?查看不包含这些职位的任何记录。
我告诉他,如果 || 之间有字符串合并zc,如果zw和zc都为空,则结果为空字符串。
可以吗?后来尝试了一下,确实有效,但是要小心,考虑彻底处理空值。

我在杭州做一个项目,遇到了类似的情况。
有一个表,其中包含职位和头衔,均为 VARCHAR 类型。
结果有人把NULL当成空字符串,导致查询错误。
后来我们改了,对职位和头衔使用NVARCHAR或者统一处理空值。
你看,细节决定成败。

让我帮你看看你的代码:
sql 选择t。
来自 test_users t WHERE NOT REGEXP_LIKE(zw || zc, 'Dean|Principal|Director|Director');
这个逻辑是正确的,但是要注意空值问题。
如果 zw 和 zc 都为空,则 zw || zc 是一个空字符串,如果没有匹配则找到。
如果其中一个为空而另一个有值,也会被找出来。
例如“陈XX”中zw为空,zc为“dean”,zw || zc是“院长”。
如果没有匹配,就会找到。
“王XX”,zw为“校长”,zc为空,zw || zc 是“Principal”,没有匹配,已查出。

所以这段代码没有问题,但是需要注意null值的处理。
可以在查询前添加判断,或者使用COALESCE函数进行处理。
例如:
sql 选择t。
来自 test_users t WHERE NOT REGEXP_LIKE(COALESCE(zw, '') || COALESCE(zc, ''), 'Dean|Principal|Director|Director');
如果 zw 或 zc 为 NULL,这样会被视为空字符串,查询会更加精确。

总之,操作数据库时需要小心,尤其是SQL。
创建表、插入数据、检查数据时,每一步都必须经过技术人员的确认。
不要像我带来的新人那样,长时间工作后才发现要求没有明确说明。

您还有什么问题吗?就问我吧!

sql语句“不包含”怎么写

上星期。
我调查了一下。
SQL 内部。
不要使用。

例如。
假设你想检查名字是否不是“张三”。
你可以这样写。

SELECT FROM 表名 WHERE 字段名 != '张三'

SELECT FROM 表名 WHERE 字段名 '张三'
两者都可以使用。
检查您的数据库支持哪一种。

更复杂的情况。
例如,字段值不能包含某些子字符串。
你可以用“我不喜欢”。

例如。
确保字段值不包含“abc”。

SELECT FROM 表名 WHERE 字段名 NOT LIKE '%abc%'
% 是通配符。
代表任意数量的字符。

如果您想排除多个值。
例如,该值不能是“值 1 ”、“值 2 ”或“值 3 ”。

您可以使用“NOT IN”。

SELECT FROM 表名 WHERE 字段名 NOT IN ('值 1 ', '值 2 ', '值 3 ')
简而言之。
不要添加条件。
“不包括在内”是可以实现的。

没错。
我只是想到了。
当使用NOT时。
条件必须写正确。

我写错了。
你发现的可能是错误的。
请注意这一点。

算了。
由你决定。

筛选出sql 查询结果中 不包含某个字符

你的 SQL...坦白说,它非常令人困惑。

看第一句内部:SelectCardNoFromCardTableWhereName='C'。
这东西是干什么用的?它只是获取 CardTable 表中的所有名称并找到相应的卡号。
假设找到的两个值是['C001 ','C002 ']。

那么外句cardnonotin(...)...的意思是:在cardtable表中查找cardno,但排除刚刚找到的C001 和C002
所以最终结果是为您列出表中名称不以“c”开头的所有卡尔达诺。

嵌套查询真的很酷。
可以一层一层的挖。
例如,先找到某个位置,然后根据这个结果找到另一个位置。
但写的时候一定要小心,不要把自己卷入其中。
因为它存在,有时它甚至更高效,但书写方式不同。

虽然您提到的类型存在,但它们中的任何/所有......实际上都可以组合。
派生表是临时表,写入后就消失。
W3 C 的信息看起来相当完整,但有点模糊。