1.簡述:
通過幾條sql語句來引入此問題
- 先新建一張表恩溅,插入幾條數(shù)據(jù)瘤礁,如下:
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');
- 在根據(jù)條件模糊查詢的時候,有如下三種寫法:
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'),'%');
如上三種寫法的等效的裸准,最常用的是第一張寫法展东,第二種第三種使用拼接,但是不同在于 ||
可以無限拼接炒俱,類似于拼接字符串時候的 +
盐肃,而concat
是oracle
中的函數(shù)爪膊,CONCAT(char1 , char2)
,此函數(shù)中有且僅有2個參數(shù)砸王,所以第三種寫法拼接了2次推盛。
2.其他用法
如下sql:
SELECT col1||col2||col3||col4 "Concatenation" FROM tab1;
查詢結(jié)果如下:
SELECT 'col1=' || t.col1 || ',col2=' || t.col2 "字段拼接"
FROM tab1 t;
查詢結(jié)果如下:
也就是當(dāng)我們需要自定義查詢結(jié)果的時候,使用||
拼接谦铃。
3.我所用過的案例:
在java
中需要向 map
集合里面 put
多個表中的數(shù)據(jù)耘成。
SELECT 'map.put("' || t.col1 || '","' || t.col2 || '")' "put"
FROM tab1 t;
這樣的查詢結(jié)果如下:
這樣就可以將結(jié)果復(fù)制到
java
代碼里去使用了。
注:在oracle
中驹闰,需要上述多次拼接應(yīng)使用||
凿跳,因為concat()
一次只能拼接2個,需要多次嵌套疮方。而在mysql
中,可以實現(xiàn)concat(col1,col2,coln....)
本文所有建表茧彤,插入骡显,查詢都是oracle
數(shù)據(jù)庫。
最后,還是應(yīng)該多參考官方文檔,鏈接如下:
CONCAT
Concatenation Operator