首先“+”是运算符,“concat”是函数。
在数据库中都是用concat来做字符串连接。
如下图我们可以看到,mysql数据库在用“+”前后拼接字符串时,不会进行拼接,而是内部转换成数字来进行计算。如果是字符相加返回值则是0.
如下图2-1,oracle不同与mysql,虽然+也是运算符,如果是数字带了单引号做相加,结果和mysql相同,会自动转换成number形再做运算。
oracle.png2-1
但是如果其中存在字母加单引号,会直接报无效数字错误。
oracle2-2
同样今天在做where in 查询的时候 发现了同样的问题,
如下图2-3有一个测试表 tbl_example,有三个字段。id number、num varchar2、text clob。
oracle2-3
如果原本varchar2的值是1、2数字的话,in 条件查询没有问题。
oracle2-4
但是如果把数字全部改成字母,即便是会自动转换也会报无效数字的错。如图2-6
oracle2-5
oracle2-6
网友评论