你的意思是这样吗?
成都创新互联专注于苏尼特左网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供苏尼特左营销型网站建设,苏尼特左网站制作、苏尼特左网页设计、苏尼特左网站官网定制、小程序定制开发服务,打造苏尼特左网络公司原创品牌,更为您提供苏尼特左网站排名全网营销落地服务。
select a.* from a where a.num='12' and a.name='34' and not
如果是这样,肯定会报错的。
oracle中并没有and not的用法,not一般是与is或者in或者exists一起使用的,比如判断某个字段为空或不为空
字段名 is null 或者 字段名 is not null
例如:
select a.* from a where a.num='12' and a.name='34' and sex is not null
判断性别不为空。
此外还有not in 和not exists ,都是表示否定的意思。
还有就是not 后接一个boolean表达式,比如not a = b,就是等价于 ab,表示a不等于b
在Oracle中,
!=
~=
^=
都是不等于号的意思。都可以使用。
但是奇怪是的, 我想拿出price不是180000的商品时:(price是Number类型的)
SELECT id, name FROM product where price 180000;
执行这个语句时,priceis null 的记录不出来。也就是拿不到price是null的商品。必须使用:
SELECT id, name FROM product where price 180000 or price is null;才行。
字符串的字段存在同样的问题。
记住:null只能通过is null或者is not null来判断,其它操作符与null操作都是false。
测试:select * from test where name'xn'。只能查出name非空的记录。去掉name'xn'就可以了。这种写法有问题。
然后用了instr(name,'xn')=0 来判断,如果name非空的话,判断还是有效的。如果name为空,这个判断又出问题了。不得已只得采取instr(concat(name,'xx'),'xn') = 0来判断,因为就算name为空,当和'xx'连接后,也会不为空的。
所以最后的sql语句为:
select * from test where instr(concat(name,'xx'),'xn') = 0 来查询name字段不等于'xn'的记录。
或者可以用 select * from test where nvl(name,'xx')'xn' 来查询name字段不等于'xn'的记录。
是存储过程里面的 IF/ELSE ? 还是简单的 DECODE ?
SQL DECLARE
2 testvalue INT;
3 BEGIN
4 testvalue := 100;
5
6 IF testvalue 100 THEN
7 dbms_output.put_line( '100+' );
8 ELSIF testvalue = 100 THEN
9 dbms_output.put_line( '100' );
10 ELSE
11 dbms_output.put_line( '100-' );
12 END IF;
13
14 END;
15 /
100
PL/SQL procedure successfully completed.
SQL SELECT
2 DECODE(GROUPING(sale_item), 1, 'ALL', sale_item) AS iten,
3 SUM(sale_money) AS money
4 FROM
5 sale_report
6 GROUP BY
7 ROLLUP(sale_item);
ITEN MONEY
------ ----------
A 733285
B 2382
C 5738
ALL 741405
语句为:
select * from test where instr(concat(name,'xx'),'xn') = 0 来查询name字段不等于'xn'的记录。
或者可以用 select * from test where nvl(name,'xx')'xn' 来查询name字段不等于'xn'的记录。