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
  • 移動開發(一):使用.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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...