oracle數據庫 concat 與 ||


1.簡述:

通過幾條sql語句來引入此問題
先新建一張表,插入幾條數據,如下:

CREATE TABLE tab1 (col1 VARCHAR2(6), col2 CHAR(6),
        col3 VARCHAR2(6), col4 CHAR(6) );

INSERT INTO tab1 (col1,  col2,     col3,     col4)
        VALUES   ('abc', 'def   ', 'ghi   ', 'jkl');
        
INSERT INTO tab1 (col1,  col2,     col3,     col4)
       VALUES   ('1a', '456   ', '321   ', '234');
       
INSERT INTO tab1 (col1,  col2,     col3,     col4)
       VALUES   ('45345', '656   ', '65   ', 'a1');

在根據條件模糊查詢的時候,有如下三種寫法:

SELECT * from tab1 t where t.col1 like '%a%';

SELECT * from tab1 t where t.col1 like '%' || 'a' || '%';

SELECT * from tab1 t where t.col1 like  concat(concat('%','a'),'%');

如上三種寫法的等效的,最常用的是第一張寫法,第二種第三種使用拼接,但是不同在於 || 可以無限拼接,類似於拼接字符串時候的 +,而concatoracle中的函數,CONCAT(char1 , char2),此函數中有且僅有2個參數,所以第三種寫法拼接了2次。

2.其他用法

如下sql:

SELECT col1||col2||col3||col4 "Concatenation"  FROM tab1;

查詢結果如下:

SELECT 'col1=' || t.col1 || ',col2=' || t.col2 "字段拼接"
        FROM tab1 t;

查詢結果如下:

也就是當我們需要自定義查詢結果的時候,使用||拼接。

3.我所用過的案例:

java中需要向 map 集合里面 put 多個表中的數據。

SELECT 'map.put("' || t.col1 || '","' || t.col2 || '")' "put"
        FROM tab1 t;

這樣的查詢結果如下:

這樣就可以將結果復制到java代碼里去使用了。

注:在oracle中,需要上述多次拼接應使用||,因為concat()一次只能拼接2個,需要多次嵌套。而在mysql中,可以實現concat(col1,col2,coln....)
本文所有建表,插入,查詢都是oracle數據庫。
最后,還是應該多參考官方文檔,鏈接如下:
CONCAT
Concatenation Operator


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM