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

推荐阅读更多精彩内容

  • 关系型数据库和SQL SQL语言的三个部分DML:Data Manipulation Language,数据操纵语...
    Awey阅读 1,660评论 0 13
  • 1、引言 数据库设计过程中表、字段等的命名规范也算是设计规范的一部分,不过设计规范更多的是为了确保数据库设计的合理...
    SnowflakeCloud阅读 39,240评论 0 48
  • 从前的桔子 真好吃 黄澄澄的像一个个灯笼 剥皮是要闭上眼睛的 因为有酸水溅出 酸水闻着就酸 能勾引出你的口水 一瓣...
    倚诗爱世阅读 186评论 0 2
  • 不知道小说的作者都把自己的作品看成什么,会不会是自己的孩子,自己珍惜,又怀着忐忑的心情期待得到人们的认可。《女王乔...
    三更笙阅读 310评论 0 3
  • 今天全家一起去看了《悟空传》与之前的各种悟空,又多了几分脑洞和看似颠覆、实则领悟过的禅机。 悟空石心似魔,实则向善...
    知多少_LJ阅读 291评论 0 0