您好,登錄后才能下訂單哦!
這篇“oracle/mysql拼接值遇到的坑及雙豎線||和concat怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“oracle/mysql拼接值遇到的坑及雙豎線||和concat怎么使用”文章吧。
“||” 在oracle中是拼接值,但在mysql中是“或”的意思。
where name like '%' || 'Tony' || '%'
所以推薦使用concat()
但concat()也有坑。
mysql中,可以直接用concat拼接3個值,
concat( '%' , 'Tonny' , '%' )
oracle中,這樣使用是錯誤的。因為oracle的concat只能拼接2個值,需要這樣:
concat( '%' , concat('Tonny' , '%') )
缺點:只支持兩個字符串的拼接,超過兩個會報錯(報的錯好像是缺失右括號)
//表中的兩個字段拼接 select concat(t1.column_1,t1.column_2) from table t1;//任意一個字段與任意字符串拼接 (time是取的別名,記住:Oracle 取別名不要用as ) select concat('時間是: ',t1.column_2) time from table t1; select concat(t1.column_1,' 單位:元') time from table t1;//超過兩個字段,會報錯(下面這樣寫會報錯) select concat(t1.column_1,t1.column_2,t1.column_3) from table t1;
在使用CONCAT() 函數進行字符串拼接時,如果拼接的字段(字符串)中有中文,可能會導致亂碼,解決方法把拼接的字段(字符串)加上 to_char()即可:
//如果遇到亂碼,加上to_char() select concat(to_char(t1.column_1),to_char(t1.column_2)) time from table t1;
使用“||”拼接,就不受限制了
//表中兩個字符串拼接,取別名為time select t1.column_1 || t1.column_2 time from table t1;//表中三個字符串拼接,取別名為time //這里可以使用括號將幾個要拼接的字段括起來,可讀性會好點,好像加不加括號都不影響 select (t1.column_1 || t1.column_2 || t1.column_3) time from table t1;
用“||”拼接的好處,在做模糊查詢時,可以利用這個
//這樣可以動態進行模糊查詢,field是動態值 select t1.* from table t1 where t1.name like '%' || field || '%';//如果對模糊查詢更加細粒度,當然,也可以使用concat()進行模糊查詢 select t1.* from table t1 where t1.name like concat('%',field); select t1.* from table t1 where t1.name like concat(field,'%');
業務需要,將幾個字段拼接為一個字段進行查詢,發現查完了全是空,后來在網上查詢發現:
使用 || 或者concat拼接字符串,如果其中一個是null,就變成null
轉為使用 concat_ws可以避免
以上就是關于“oracle/mysql拼接值遇到的坑及雙豎線||和concat怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。