oracle 中的 CONCAT,substring ,MINUS 用法

來源:互聯網
上載者:User

 

有的時候,我們有需要將由不同欄位獲得的資料串聯在一起。每一種資料庫都有提供方法來達到這個目的:

  • 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 指令下,不同的值只會被列出一次。
<轉自:http://sql.1keydata.com/cn/sql-minus.php >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.