• 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

  • 相关阅读:
    JavaScript操作服务器控件之Gridview控件
    GridView_RowDataBound 常用方法
    GridView ,后台修改 跟新完毕,前端 未跟新处理
    怎么判断DropDownList是否选择值
    GridView.SelectedIndex
    DropDownlist数据SelectedIndexChanged触发问题解决
    error:将字符串转换为 uniqueidentifier 时失败
    UniqueIdentifier 数据类型
    在Sql2005中,向表中插入数据时遇到uniqueidentifier列,如何插入数据?
    mysql给id生成uuid
  • 原文地址:https://www.cnblogs.com/kangkaii/p/8421837.html
Copyright © 2020-2023  润新知