MySql 和 Oracle 字符串拼接 "+"和"concat"区别

首先“+”是运算符,“concat”是函数。
在数据库中都是用concat来做字符串连接。
如下图我们可以看到,mysql数据库在用“+”前后拼接字符串时,不会进行拼接,而是内部转换成数字来进行计算。如果是字符相加返回值则是0.

mysql1-1
mysql1-2

如下图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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容