oracle数据库 concat 与 ||

Posted kangkaii

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于oracle数据库 concat 与 ||的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段

Oracle模糊查询CONCAT参数个数无效

oracle12 listagg 与 wm_concat行列转换

[Oracle]行列转换(行合并与拆分)

oracle 12c 关于wm_concat 的替换;LISTAGG

PostgreSQL 中的 ORACLE wm_concat 等效项