zoukankan      html  css  js  c++  java
  • oracle 输出结果集相连接 oracle 中的 CONCAT,substring ,MINUS 用法

    oracle 中的 CONCAT,substring ,MINUS 用法http://blog.csdn.net/love_rrr/archive/2009/03/25/4022623.aspx


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

    MySQL: CONCAT()
    Oracle: CONCAT(), ||
    SQL Server: +
    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 指令下,不同的值只会被列出一次。
  • 相关阅读:
    Erlang 杂记 IV
    ASP.NET MVC的View是如何被呈现出来的?[设计篇]
    面向对象—在线文件管理模块
    软件开发中个人在团队里的效绩评定
    用go语言遍历文件夹
    磁盘缓存的算法:写算法
    一种Lua到C的封装
    从信息系统界面设计引发的思考
    基于Backbone.js的JavaScript MVC示例程序
    C和C++
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400549.html
Copyright © 2011-2022 走看看