`

oracle 中的 CONCAT,substring ,MINUS 用法

阅读更多
http://blog.csdn.net/love_rrr/archive/2009/03/25/4022623.aspx


有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的:

MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +
PostgreSQL: ||

CONCAT() 的语法如下:
CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。请注意,Oracle的CONCAT()只允许两个参数;换言之,一次只能将两个字串串连起来。不过,在Oracle中,我们可以用'||'来一次串连多个字串。

来看几个例子。假设我们有以下的表格:

Geography 表格

region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
例子1:

MySQL/Oracle:
SELECT CONCAT(region_name,store_name) FROM Geography
WHERE store_name = 'Boston';

结果:

'EastBoston'

例子2:

Oracle:
SELECT region_name || ' ' || store_name FROM Geography
WHERE store_name = 'Boston';

结果:

'East Boston'

例子3:

SQL Server:
SELECT region_name + ' ' + store_name FROM Geography
WHERE store_name = 'Boston';

结果:

'East Boston'





SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样:

MySQL: SUBSTR(), SUBSTRING()
Oracle: SUBSTR()
SQL Server: SUBSTRING()
最常用到的方式如下 (在这里我们用SUBSTR()为例):

SUBSTR(str,pos): 由<str>中,选出所有从第<pos>位置开始的字元。请注意,这个语法不适用于SQL Server上。

SUBSTR(str,pos,len): 由<str>中的第<pos>位置开始,选出接下去的<len>个字元。

假设我们有以下的表格:

Geography 表格

region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
例1:

SELECT SUBSTR(store_name, 3)
FROM Geography
WHERE store_name = 'Los Angeles';

结果:

's Angeles'

例2:

SELECT SUBSTR(store_name,2,4)
FROM Geography
WHERE store_name = 'San Diego';

结果:

'an D'





MINUS 指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中。如果有的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存在于第一个 SQL 语句所产生的结果内,那这笔资料就被抛弃。

MINUS 的语法如下:

[SQL 语句 1]
MINUS
[SQL 语句 2]

我们继续使用一样的例子:

Store_Information 表格
store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999
Internet Sales 表格
Date Sales
Jan-07-1999 $250
Jan-10-1999 $535
Jan-11-1999 $320
Jan-12-1999 $750
而我们要知道有哪几天是有店面营业额而没有网络营业额的。要达到这个目的,我们用以下的 SQL 语句:

SELECT Date FROM Store_Information
MINUS
SELECT Date FROM Internet_Sales

结果:

Date
Jan-05-1999
Jan-08-1999
"Jan-05-1999", "Jan-07-1999", and "Jan-08-1999" 是 "SELECT Date FROM Store_Information" 所产生的结果。在这里面,"Jan-07-1999" 是存在于 "SELECT Date FROM Internet_Sales" 所产生的结果中。因此 "Jan-07-1999" 并不在最后的结果中。

请注意,在 MINUS 指令下,相同的值只会被列出一次。
分享到:
评论
2 楼 Wuaner 2010-11-16  
davidx 写道
自己测啦下 minus指令,最好一句话“请注意,在 MINUS 指令下,不同的值只会被列出一次。 ”应该是“请注意,在 MINUS 指令下,相同的值只会被列出一次。 ”



谢谢提醒!!呵呵。已改过来了。
1 楼 davidx 2009-09-09  
自己测啦下 minus指令,最好一句话“请注意,在 MINUS 指令下,不同的值只会被列出一次。 ”应该是“请注意,在 MINUS 指令下,相同的值只会被列出一次。 ”

相关推荐

    解决Oracle没有WM_CONCAT函数.zip

    标题“解决Oracle没有WM_CONCAT函数”暗示了这个问题的背景:用户在尝试使用WM_CONCAT时遇到了问题,或者想要在不支持此函数的数据库环境中实现类似的功能。这可能是因为他们正在处理需要聚合多个字符串字段的查询,...

    oracle 创建wm_concat函数

    ### Oracle 创建wm_concat函数 #### 知识点一:Oracle 10G及以下版本的wm_concat函数自定义...这种方法不仅可以帮助我们在早期版本的Oracle数据库中实现字符串连接功能,还可以加深我们对Oracle数据库内部机制的理解。

    Oracle新版中不支持 WM_CONCAT的处理方法

    Oracle新版中不支持 WM_CONCAT的处理方法,直接创建一个自定义函数代替

    oracle替换wm_concat varchar处理为clob处理的方法

    是处理wm_concat中以varchar处理合并列字段过小。 clob 可以加大处理。 oracle 9I oracle 10G 必备

    oracle 9i 实现wm_concat函数

    oracle 9i 实现wm_concat函数 进行一列多行合并,之间使用,分割

    Oracle没有WM_CONCAT函数的解决办法.rar

    1、下载三个文件:owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb 2、用sqlplus登录:sqlplus -logon sys/123 as sysdba 3、执行@C:\Users\JOYTRAVEL\Desktop\WMSYS用户\owmaggrb.plb; 如果执行结果报错,说找不...

    详解MySQL中concat函数的用法(连接字符串)

    在MySQL数据库中,`CONCAT`函数用于将两个或更多的字符串连接成一个单一的字符串。这个函数非常实用,尤其是在处理涉及字符串拼接的查询时。`CONCAT`的基本语法如下: ```sql CONCAT(str1, str2, ..., str_n) ``` ...

    Oracle重建WMSYS用户及WMSYS.WM_CONCAT函数(更低分)

    这个错误通常意味着试图访问或使用`WMSYS.WM_CONCAT`函数时遇到了问题,这是一个在早期Oracle版本中提供的聚合函数,用于字符串连接,但在较新的版本中被弃用并替换为其他更安全和高效的解决方案。 `WMSYS`是Oracle...

    Oracle重建WMSYS用户及WMSYS.WM_CONCAT函数

    解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 在sqlplus中执行包里的owmctab.plb、owmaggrs.plb、owmaggrb.plb三个脚本即可。 简单来说,用PL/SQL执行下一下几个脚本就可以了。 特别要注意:PL/SQL登录时,要...

    codesys中CONCAT函数共1页.pdf.zip

    在CODESYS编程环境中,CONCAT函数是...在编写涉及字符串处理的CODESYS程序时,熟练掌握CONCAT函数的使用方法是提高效率的关键。通过深入了解和实践,你将能够自如地应对各种字符串处理挑战,为你的项目增添更多可能性。

    oracle wm_concat 列转行 逗号分隔

    Oracle中的WM_CONCAT函数是一个非标准的聚合函数,主要用于将多行数据合并成单行,以...总之,Oracle的WM_CONCAT函数虽然方便,但在新的Oracle版本中已不再推荐,应考虑使用更现代的聚合函数或方法来实现相同的效果。

    Oracle 11g 重建WMSYS.WM_CONCAT函数

    Oracle10g之后有些版本已不包含WMSYS.WM_CONCAT函数,若用到此函数, 系统会提示异常:ORA-00904: "WM_CONCAT": invalid identifier 因此需单独重建此函数,方法如下: 解压附件,在sqlplus中执行包里的owmctab....

    oracle行转列聚合函数WMSYS.WM_CONCAT

    通过本文的学习,我们了解了Oracle中的`WMSYS.WM_CONCAT`函数及其使用方法。这是一个非常实用的函数,能够帮助我们在处理复杂的数据转换时更加高效和方便。同时,我们也应该注意在使用过程中可能出现的一些问题,如...

    OracleXE中没有WM_CONCAT函数

    包含owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb 三个文件,可解决OracleXE中没有WM_CONCAT函数的问题;解决方案如下:1、下载三个文件:owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb 2、用sqlplus登录:...

    ORA-00904: "WM_CONCAT": 标识符无效

    在这个场景下,错误信息提到的是"WM_CONCAT"函数,这表明在Oracle 19c数据库环境中,用户尝试使用WM_CONCAT函数,但系统无法识别该函数,提示其为无效的标识符。WM_CONCAT是Oracle 10g及更早版本中用于字符串合并的...

    类似于wmsys.wm_concat的自定义函数clob版

    在Oracle数据库中,`WMSYS.WM_CONCAT`函数是一个非常实用的工具,它用于将多行数据合并成一个单行字符串。然而,由于其内部处理机制,当需要合并的数据量过大时,可能会遇到“字符串缓冲区太小”的错误。这是因为`WM...

    WM_CONCAT.zip

    `WM_CONCAT`的替代方案是使用`LISTAGG`函数,这是Oracle 11g引入的一个新特性,它可以将行集中的数据聚合为单个字符串,同时支持分隔符。例如,如果你有一个包含产品ID的表,你可以用`LISTAGG`来生成一个逗号分隔的...

    重写oracle wm_contact函数

    根据提供的文件信息,本文将对重写Oracle中的`wm_concat`函数进行详细的解析与扩展讨论。此函数在Oracle数据库中用于连接多个字符串为一个单一的字符串。原生的`wm_concat`函数虽然能够满足基本需求,但在特定场景下...

    BLOG_Oracle_wm_concat包的订制.pdf

    `LISTAGG`分析函数的使用方法如下: ```sql SELECT LISTAGG(column_name, delimiter) WITHIN GROUP (ORDER BY column_name) FROM table_name GROUP BY group_column; ``` 在这里,`column_name`是你希望聚合的列名,...

    重建WMSYS用户的WMSYS.WM_CONCAT函数的3个文件

    这个函数在早期的Oracle版本中很常用,但在11g及更高版本中被DEPRECATED,推荐使用SQL标准的CONCAT函数或LISTAGG聚合函数。 3. **重建WM_CONCAT**: 重建WMSYS.WM_CONCAT通常涉及到以下步骤: - 复制PL/SQL源代码...

Global site tag (gtag.js) - Google Analytics