mysql必知必會--創建計算欄位

来源:https://www.cnblogs.com/ygjzs/archive/2020/01/22/12229929.html
-Advertisement-
Play Games

計算欄位 存儲在資料庫表中的數據一般不是應用程式所需要的格式。下麵舉 幾個例子。 * 如果想在一個欄位中既顯示公司名,又顯示公司的地址,但這兩 個信息一般包含在不同的表列中。 * 城市、州和郵政編碼存儲在不同的列中(應該這樣),但郵件標簽 列印程式卻需要把它們作為一個恰當格式的欄位檢索出來。 * 列 ...


 計算欄位

存儲在資料庫表中的數據一般不是應用程式所需要的格式。下麵舉
幾個例子。
* 如果想在一個欄位中既顯示公司名,又顯示公司的地址,但這兩
個信息一般包含在不同的表列中。
* 城市、州和郵政編碼存儲在不同的列中(應該這樣),但郵件標簽
列印程式卻需要把它們作為一個恰當格式的欄位檢索出來。
* 列數據是大小寫混合的,但報表程式需要把所有數據按大寫表示
出來。
* 物品訂單表存儲物品的價格和數量,但不需要存儲每個物品的總
價格(用價格乘以數量即可)。為列印發票,需要物品的總價格。
* 需要根據表數據進行總數、平均數計算或其他計算。
在上述每個例子中,存儲在表中的數據都不是應用程式所需要的。
我們需要直接從資料庫中檢索出轉換、計算或格式化過的數據;而不是
檢索出數據,然後再在客戶機應用程式或報告程式中重新格式化。
這就是計算欄位發揮作用的所在了。與前面各章介紹過的列不同,
計算欄位並不實際存在於資料庫表中。計算欄位是運行時在 SELECT 語句
內創建的。

欄位(field) 基本上與列(column)的意思相同,經常互換使
用,不過資料庫列一般稱為列,而術語欄位通常用在計算欄位的
連接上。
重要的是要註意到,只有資料庫知道 SELECT 語句中哪些列是實際的
表列,哪些列是計算欄位。從客戶機(如應用程式)的角度來看,計算
欄位的數據是以與其他列的數據相同的方式返回的。

客戶機與伺服器的格式 可在SQL語句內完成的許多轉換
和格式化工作都可以直接在客戶機應用程式內完成。但一
般來說,在資料庫伺服器上完成這些操作比在客戶機中完
成要快得多,因為DBMS是設計來快速有效地完成這種處
理的。

拼接欄位

拼接(concatenate) 將值聯結到一起構成單個值。
解決辦法是把兩個列拼接起來。在MySQL的 SELECT 語句中,可使用
Concat() 函數來拼接兩個列

MySQL的不同之處 多數DBMS使用 + 或 || 來實現拼接,
MySQL則使用 Concat() 函數來實現。當把SQL語句轉換成
MySQL語句時一定要把這個區別銘記在心。

Concat() 拼接串,即把多個串連接起來形成一個較長的串。
Concat() 需要一個或多個指定的串,各個串之間用逗號分隔。
上面的 SELECT 語句連接以下4個元素:

  • 存儲在 vend_name 列中的名字;
  • 包含一個空格和一個左圓括弧的串;
  • 存儲在 vend_country 列中的國家;
  • 包含一個右圓括弧的串。
    從上述輸出中可以看到, SELECT 語句返回包含上述4個元素的單個列
    (計算欄位)。

通過刪除數據右側多餘的空格來整理數據,這可以
使用MySQL的 RTrim() 函數來完成,如下所示:

Trim 函數 MySQL除了支持 RTrim() (正如剛纔所見,它去掉
串右邊的空格),還支持 LTrim() (去掉串左邊的空格)以及
Trim() (去掉串左右兩邊的空格)。

使用別名

從前面的輸出中可以看到, SELECT 語句拼接地址欄位工作得很好。
但此新計算列的名字是什麼呢?實際上它沒有名字,它只是一個值。如
果僅在SQL查詢工具中查看一下結果,這樣沒有什麼不好。但是,一個未
命名的列不能用於客戶機應用中,因為客戶機沒有辦法引用它。
為瞭解決這個問題,SQL支持列別名。別名(alias)是一個欄位或值
的替換名。別名用 AS 關鍵字賦予。請看下麵的 SELECT 語句

SELECT 語句本身與以前使用的相同,只不過這裡的語句中計算
欄位之後跟了文本 AS vend_title 。它指示SQL創建一個包含
指定計算的名為 vend_title 的計算欄位。從輸出中可以看到,結果與以
前的相同,但現在列名為 vend_title ,任何客戶機應用都可以按名引用
這個列,就像它是一個實際的表列一樣

別名的其他用途 別名還有其他用途。常見的用途包括在實際
的表列名包含不符合規定的字元(如空格)時重新命名它,在
原來的名字含混或容易誤解時擴充它,等等

導出列 別名有時也稱為導出列(derived column),不管稱為
什麼,它們所代表的都是相同的東西

執行算術計算

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

如何測試計算 SELECT 提供了測試和試驗函數與計算的一個
很好的辦法。雖然 SELECT 通常用來從表中檢索數據,但可以
省略 FROM 子句以便簡單地訪問和處理表達式。例如, SELECT
3*2; 將返回 6 , SELECT Trim('abc'); 將返回 abc ,而 SELECT
Now() 利用 Now() 函數返回當前日期和時間。通過這些例子,
可以明白如何根據需要使用 SELECT 進行試驗。

本章介紹了計算欄位以及如何創建計算欄位。我們用例子說明瞭計
算欄位在串拼接和算術計算的用途。此外,還學習瞭如何創建和使用別
名,以便應用程式能引用計算欄位。


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

-Advertisement-
Play Games
更多相關文章
  • 這是該系列的第二篇文章: "在ASP.NET Core 3.0中使用Serilog.AspNetCore" 。 1. "第1部分 使用Serilog RequestLogging來簡化ASP.NET Core的日誌輸出" 2. "第2部分 用Serilog記錄所選終結點的附加屬性" (本文) 3. ...
  • 基礎教程之導出Pdf收據 說明 本教程主要說明如何使用Magicodes.IE.Pdf完成Pdf收據導出 要點 導出PDF數據 自定義PDF模板 導出單據 如何批量導出單據 導出特性 PdfExporterAttribute + Orientation : 方向(橫向或縱向) + PaperKind ...
  • 本文介紹調用Spire.Cloud.Word.SDK提供的介面shapesApi來操作Word形狀,包括添加形狀AddShape(),添加形狀時,可設置形狀類型、顏色、大小、位置、傾斜、輪廓、文本環繞方式、順序);刪除形狀DeleteShape()和讀取形狀屬性GetShapeProperties( ...
  • NuGet微軟官方中國鏡像地址: https://nuget.cdn.azure.cn/v3/index.json 打開Visual Studio => 工具 => NuGet包管理器 => 程式包管理器設置 找到“Net包管理器” => “程式包源”,點擊“+”新建項,將地址https://nug ...
  • 要點 導出特性 如何導出Excel表頭 如何導出數據、如何進行數據的切割、如何使用篩選器 導出特性 ExporterAttribute + Name : 名稱(當前Sheet 名稱) + HeaderFontSize :頭部字體大小 + FontSize :正文字體大小 + MaxRowNumber ...
  • 首先在左下角輸入cmd搜索->命令提示符->以管理員身份運行->然後複製下麵一段命令: dism /online /norestart /add-package:%SystemRoot%\servicing\Packages\Microsoft-Windows-IIS-WebServer-AddOn ...
  • https://sqlserver.code.blog/2020/01/22/failed-to-restart-polybase-data-movement-after-running-sp_polybase_join_group/ ...
  • 函數 與其他大多數電腦語言一樣,SQL支持利用函數來處理數據。函數 一般是在數據上執行的,它給數據的轉換和處理提供了方便。 在前一章中用來去掉串尾空格的 RTrim() 就是一個函數的例子 函數沒有SQL的可移植性強 能運行在多個系統上的代碼稱 為可移植的(portable)。相對來說,多數SQL ...
一周排行
    -Advertisement-
    Play Games
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...