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'),'%');
如上三种写法的等效的,最常用的是第一张写法,第二种第三种使用拼接,但是不同在于 ||
可以无限拼接,类似于拼接字符串时候的 +
,而concat
是oracle
中的函数,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
作者:kangkaii
如果您觉得本文有帮助的话,可以点个推荐呐!!
若有不对或者不合理的地方也欢迎指出,感谢~
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.