1. 程式人生 > >oracle數據庫 concat 與 ||

oracle數據庫 concat 與 ||

我們 com 結果 concat like 拼接字符串 har 數據庫 ron

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

oracle數據庫 concat 與 ||