SQL必知必會 -------- 通配符、計算欄位、函數

来源:http://www.cnblogs.com/jinxiao-pu/archive/2017/05/08/6817187.html
-Advertisement-
Play Games

1.LIKE操作符 1.1百分號(%)通配符 SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE 'Fish%' 此例子使用了搜索模式'Fish%'。在執行這條子句時,將檢索任意以Fish起頭的詞。%告訴DBMS接受Fish之後的 ...


1.LIKE操作符

1.1百分號(%)通配符

SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE 'Fish%'

此例子使用了搜索模式'Fish%'。在執行這條子句時,將檢索任意以Fish起頭的詞。%告訴DBMS接受Fish之後的任意字元,不管它有多少字元。

說明:區分大小寫
根據DBMS的不同及其配置,搜索可以是區分大小寫的。如果區分大小寫,則'fish%'與Fish bean bag toy就不匹配。

通配符可在搜索模式中的任意位置使用,並且可以使用多個通配符。下麵的例子使用兩個通配符,它們位於模式的兩端 :
SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE '%bean bag%' 

需要特別註意,除了能匹配一個或多個字元外,%還能匹配0個字元。%代表搜索模式中給定位置的0個、1個或多個字元。

警告:請註意NULL
通配符%看起來像是可以匹配任何東西,但有個例外,這就是NULL。子句WHERE prod_name LIKE '%'不會匹配產品名稱為NULL的行。

1.2下劃線(_)通配符

SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE '__ inch teddy bear'

下劃線的用途與%一樣,但它只匹配單個字元,而不是多個字元。

1.3方括弧([])通配符

方括弧([])通配符用來指定一個字元集,它必須匹配指定位置(通配符的位置)的一個字元。

說明:並不總是支持集合
與前面描述的通配符不一樣,並不是所有DBMS都支持用來創建集合的[]。只有微軟的AccessSQL Server支持集合。為確定你使用的DBMS是否支持集合,請參閱相應的文檔。

SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[JM]%'
ORDER BY cust_contact;

此通配符可以用首碼字元^(脫字型大小)來否定。 

2.使用通配符的技巧

正如所見,SQL的通配符很有用。但這種功能是有代價的,即通配符搜索一般比前面討論的其他搜索要耗費更長的處理時間。這裡給出一些使用通配符時要記住的技巧。

  • 不要過度使用通配符。如果其他操作符能達到相同的目的,應該使用其他操作符。
  • 在確實需要使用通配符時,也儘量不要把它們用在搜索模式的開始處。把通配符置於開始處,搜索起來是最慢的。
  • 仔細註意通配符的位置。如果放錯地方,可能不會返回想要的數據。

總之,通配符是一種極其重要和有用的搜索工具,以後我們經常會用到它。

3.創建計算欄位

3.1拼接欄位

mysql語法:

SELECT Concat(vend_name, ' (', vend_country, ')' AS vend_title FROM Vendors
ORDER BY vend_name;

concat()主要是去除多餘的空格。

SELECT語句本身與以前使用的相同,只不過這裡的計算欄位之後跟了文本AS vend_title。它指示SQL創建一個包含指定計算結果的名為vend_title的計算欄位。從輸出可以看到,結果與以前的相同,但現在列名為vend_title,任何客戶端應用都可以按名稱引用這個列,就像它是一個實際的表列一樣。
說明:AS通常可選
在很多DBMS中,AS關鍵字是可選的,不過最好使用它,這被視為一條最佳實踐。
提示:別名的其他用途
別名還有其他用途。常見的用途包括在實際的表列名包含不合法的字元(如空格)時重新命名它,在原來的名字含混或容易誤解時擴充它。
警告:別名
別名既可以是一個單詞也可以是一個字元串。如果是後者,字元串應該括在引號中。雖然這種做法是合法的,但不建議這麼去做。多單詞的名字可讀性高,不過會給客戶端應用帶來各種問題。因此,別名最常見的使用是將多個單詞的列名重命名為一個單詞的名字。
說明:導出列
別名有時也稱為導出列(derived column),不管怎麼叫,它們所代表的是相同的東西。

3.2執行算術計算

計算欄位的另一常見用途是對檢索出的數據進行算術計算。

SELECT order_num,
prod_id,
quantity,
item_price,
quantity*item_price AS expanded_price
FROM OrderItems
WHERE order_num = 20008;

輸出中顯示的expanded_price列是一個計算欄位,此計算為quantity*item_price。

 

提示:如何測試計算
SELECT語句為測試、檢驗函數和計算提供了很好的方法。雖然SELECT通常用於從表中檢索數據,但是省略了FROM子句後就是簡單地訪問和處理表達式,例如SELECT 3 * 2;將返回6,SELECT Trim(' abc ');將返回abc,SELECT Now();使用Now()函數返回當前日期和時間。現在你明白了,可以根據需要使用SELECT語句進行檢驗。

4.使用函數

4.1文本處理數據

全部字母變為大寫:

SELECT vend_name, UPPER(vend_name) AS vend_name_upcase
FROM Vendors
ORDER BY vend_name;

 

可以看到,UPPER()將文本轉換為大寫,因此本例子中每個供應商都列出兩次,第一次為Vendors表中存儲的值,第二次作為列vend_name_upcase轉換為大寫。

4.2日期和時間處理函數

這個在不同的資料庫中差別比較大

MySQLMariaDB具有各種日期處理函數,但沒有DATEPART()。MySQLMariaDB用戶可使用名為YEAR()的函數從日期中提取年份:
輸入:
SELECT order_num
FROM Orders
WHERE YEAR(order_date) = 2012;

4.3數值處理函數

數值函數都是差不多的,自行看文檔解決即可。

作者:今孝
出處:http://www.cnblogs.com/jinxiao-pu/p/6817187.html 
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。

覺得好就點個推薦把!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.根據當前用戶的手機號獲取朋友圈的最新消息,可分頁顯示。 2.介面: ...
  • 一、應用場景 之前做商城應用時,會有對用戶資料的設置情況進行限制,如下: (1)用戶郵箱,應當只允許輸入英文字母,數字和@.兩個符號, (2)用戶手機,應當只能輸入數字,禁止輸入其他字元。 (3)用戶密碼,應當不能輸入空格以及中文字元等。 二、解決方案 針對用戶郵箱以及用戶手機,有以下兩種解決方案: ...
  • 前些日子,Android原生開發將被取締的吵得火熱,JavaScript是能做一個完全的APP,但只使用JavaScript做出來的APP也不會牛逼到哪裡去。最好的是混合(Hybrid)開發,在需要的時候使用JavaScript,各有好處。 Hybrid App中原生頁面 VS H5頁面:http: ...
  • 1.登錄功能 用戶登陸使用手機號+簡訊驗證碼的方式登陸,伺服器端並不保存用戶手機號。 登陸成功後客戶端可以獲取到登陸標識,客戶端可以通過登陸標識保持相對長時間的訪問伺服器的許可權。 2.介面 獲得驗證碼: 匿名Login: 3.代碼 MainActivity LoginActivity ...
  • 一、佈局文件 設置界面,添加一個ImageView,和兩個Button按鈕,設置其屬性及id 二、聲明網路許可權 因為使用網路功能需要添加許可權,修改AndroidManifest.xml文件添加許可權聲明語句。 三、編輯ManActivity.java文件。 四、運行結果 點擊下載按鈕下載圖片。讀取圖片 ...
  • 問題描述:當我把已經做好的ArcGIS Android工程想在其他電腦運行時,總是會提示報錯。而報錯的地方,正是出現在下麵這條語句上。 解決方法:把這行註釋掉,重新Sync(同步)一下;再把註釋去掉,再Sync一下。你會發現工程可以運行了。 如果代碼編輯器右上角沒有找到 SyncNow 這個字眼,請 ...
  • 修改提示符,設置後挺方便的 例如: 幾個好用的參數 \d 當前資料庫 \u 當前用戶 \h 當前主機 更多參數可以參考mysol官方文檔 參考文檔:https://dev.mysql.com/doc/refman/5.7/en/mysql commands.html ...
  • 在使用Spark時經常需要把數據落入HBase中,如果使用普通的Java API,寫入會速度很慢。還好Spark提供了Bulk寫入方式的介面。那麼Bulk寫入與普通寫入相比有什麼優勢呢? BulkLoad不會寫WAL,也不會產生flush以及split。 如果我們大量調用PUT介面插入數據,可能會導 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...