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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...