首先“+”是運(yùn)算符,“concat”是函數(shù)塞绿。
在數(shù)據(jù)庫中都是用concat來做字符串連接命辖。
如下圖我們可以看到况毅,mysql數(shù)據(jù)庫在用“+”前后拼接字符串時(shí),不會(huì)進(jìn)行拼接尔艇,而是內(nèi)部轉(zhuǎn)換成數(shù)字來進(jìn)行計(jì)算俭茧。如果是字符相加返回值則是0.
mysql1-1
mysql1-2
如下圖2-1,oracle不同與mysql漓帚,雖然+也是運(yùn)算符母债,如果是數(shù)字帶了單引號(hào)做相加,結(jié)果和mysql相同尝抖,會(huì)自動(dòng)轉(zhuǎn)換成number形再做運(yùn)算毡们。
oracle.png2-1
但是如果其中存在字母加單引號(hào),會(huì)直接報(bào)無效數(shù)字錯(cuò)誤昧辽。
oracle2-2
同樣今天在做where in 查詢的時(shí)候 發(fā)現(xiàn)了同樣的問題衙熔,
如下圖2-3有一個(gè)測(cè)試表 tbl_example,有三個(gè)字段。id number搅荞、num varchar2红氯、text clob框咙。
oracle2-3
如果原本varchar2的值是1、2數(shù)字的話痢甘,in 條件查詢沒有問題喇嘱。
oracle2-4
但是如果把數(shù)字全部改成字母,即便是會(huì)自動(dòng)轉(zhuǎn)換也會(huì)報(bào)無效數(shù)字的錯(cuò)塞栅。如圖2-6
oracle2-5
oracle2-6