创建表的时候 列名是ParentID 列类型是varchar2(64)
然后我在toad里面执行一个insert语句 该列插入的是空字符串('')
然后用select查找,当使用ParentID=''的时候,一条也查不出来
使用ParentID is null 的时候,所有记录都出来了
也就是说执行insert语句之后,ParentID字段里面存的并不是空字符串('')
而是null, 请问原因是什么?
我理想的结果是保存个空字符串(''),又该怎么处理?
然后我在toad里面执行一个insert语句 该列插入的是空字符串('')
然后用select查找,当使用ParentID=''的时候,一条也查不出来
使用ParentID is null 的时候,所有记录都出来了
也就是说执行insert语句之后,ParentID字段里面存的并不是空字符串('')
而是null, 请问原因是什么?
我理想的结果是保存个空字符串(''),又该怎么处理?
解决方案 »
- 求高手告诉怎么正确导入dmp,我用imp导入的时候有错误提示
- 查询问题,求解决。。。。
- PL/SQL 写函数, 对两个串 varchar 进行或运算
- sis数据库连接??
- 数据库就该贴心服务中型企业
- 用rman 进行时间点的不完全恢复输入的时间格式?
- PLS-00306: wrong number or types of arguments in call to 'PRC_UNITE_PRODUCT'
- * 和 ?有什么作用和区别,在取数据的时候!
- 关于大数据量的查询优化!?
- 批量数据写入,是否有简捷的方法
- 问题,请帮忙看一下
- oracle8i和oracle9i客户端对二进制流的处理方式不一样了么?
3、 空 值 和 算 术、 字 符 操 作 符
---- (1) 算 术 操 作 符: 空 值 不 等 价 于0, 任 何 含 有 空 值 的 算 术 表 达 式 其 运 算 结 果 都 为 空 值, 例 如 空 值 加10 为 空 值。
---- (2) 字 符 操 作 符||: 因 为ORACLE 目 前 处 理 零 个 字 符 值 的 方 法 与 处 理 空 值 的 方 法 相 同( 日 后 的 版 本 中 不 一 定 仍 然 如 此), 所 以 对 于||, 空 值 等 价 于 零 个 字 符 值。 例:
SQL >select ename,mgr,ename||mgr,sal,comm,sal+comm from emp;
ENAME MGR ENAME||MGR SAL COMM SAL+COMM
---------- --------- ------------- --------- --------- ---------
SMITH 7902 SMITH7902 800
ALLEN 7698 ALLEN7698 1600 300 1900
WARD 7698 WARD7698 1250 500 1750
JONES 7839 JONES7839 2975
MARTIN 7698 MARTIN7698 1250 1400 2650
BLAKE 7839 BLAKE7839 2850
CLARK 7839 CLARK7839 2450
SCOTT 7566 SCOTT7566 3000
KING KING 5000
TURNER 7698 TURNER7698 1500 0 1500
ADAMS 7788 ADAMS7788 1100
JAMES 7698 JAMES7698 950
FORD 7566 FORD7566 3000
MILLER 7782 MILLER7782 1300
---- 我 们 可 以 看 到, 凡mgr 为 空 值 的,ename||mgr 结 果 等 于ename; 凡 是comm 为 空 值 的 行,sal+comm 均 为 空 值。
譬如ParentID='ABCD' 如果是个null值 就必须写成 ParentID is null
总不能在where的每个条件都判断一下传入参数是不是null吧
譬如ParentID='ABCD' 如果是个null值 就必须写成 ParentID is null
总不能在where的每个条件都判断一下传入参数是不是null吧
--
那也没办法啊,只能判断是否为null
要么加默认值好了
SELECT v, nvl(v,'NULL'), length(v), 'abc'||v
from(select '' v from dual)a
注意好,是null,而不是''
如果你不想在查询中使用 ParentID is null,在insert的时候,应该values(' ')!
觉得不是标不标准的问题,从存储上来讲:首先,在程序设计语言中,所谓的空串即空字符串载比如说C/C++这一系列的语言中实际上会保存成一个字符串结束符,但是在Oracle里面,不会把你的空串保存成一个字符串结束符。从模式上来讲才会有所谓的''不等以NULL还是''等于NULL的问题。