【MySQL基礎-10】MySQL中的LENGTH()函數:用法詳解與實例分析

在MySQL數據庫中,LENGTH()函數是一個非常常用的字符串函數,用于計算字符串的字節長度。理解并掌握LENGTH()函數的用法,對于處理字符串數據、優化查詢以及進行數據驗證都非常有幫助。本文將詳細介紹LENGTH()函數的用法,并通過實例演示其在實際中的應用。

1. LENGTH()函數的基本語法

LENGTH()函數的基本語法如下:

LENGTH(str)
  • str:要計算長度的字符串或字段。可以是字符串常量、變量或表中的列。

LENGTH()函數返回的是字符串的字節長度,而不是字符長度。這意味著對于多字節字符集(如UTF-8),LENGTH()函數返回的值可能與實際字符數不同。

2. LENGTH()函數的返回值

LENGTH()函數返回一個整數值,表示字符串的字節長度。如果傳入的字符串為NULL,則返回NULL

2.1 示例1:計算字符串的字節長度

SELECT LENGTH('Hello, World!');

輸出:

13

在這個例子中,字符串'Hello, World!'包含13個字節(包括空格和標點符號),因此LENGTH()函數返回13。

2.2 示例2:計算多字節字符集的字節長度

SELECT LENGTH('你好,世界!');

輸出:

18

在這個例子中,字符串'你好,世界!'使用UTF-8編碼,每個中文字符占用3個字節,因此總字節長度為18。

3. LENGTH()函數與CHAR_LENGTH()函數的區別

在MySQL中,除了LENGTH()函數外,還有一個類似的函數CHAR_LENGTH(),用于計算字符串的字符長度,而不是字節長度。兩者的主要區別在于:

  • LENGTH():返回字符串的字節長度。
  • CHAR_LENGTH():返回字符串的字符長度。

3.1 示例3:LENGTH()與CHAR_LENGTH()的比較

SELECT LENGTH('你好,世界!') AS byte_length, CHAR_LENGTH('你好,世界!') AS char_length;

輸出:

+-------------+-------------+
| byte_length | char_length |
+-------------+-------------+
|          18 |           6 |
+-------------+-------------+

在這個例子中,字符串'你好,世界!'包含6個字符,但占用18個字節(UTF-8編碼),因此LENGTH()返回18,而CHAR_LENGTH()返回6。

4. LENGTH()函數的實際應用

4.1 數據驗證

LENGTH()函數可以用于數據驗證,例如確保用戶輸入的字符串長度符合要求。假設我們有一個用戶表users,其中包含一個username字段,我們希望確保用戶名長度在3到15個字符之間。

SELECT * FROM users WHERE LENGTH(username) BETWEEN 3 AND 15;

4.2 字符串截取

在某些情況下,我們可能需要根據字符串的字節長度進行截取。例如,假設我們有一個description字段,我們希望截取前100個字節的內容。

SELECT LEFT(description, 100) AS short_description FROM articles WHERE LENGTH(description) > 100;

4.3 數據遷移與優化

在進行數據遷移或優化時,LENGTH()函數可以幫助我們識別和處理過長的字符串。例如,我們可以查找所有content字段長度超過1000字節的記錄。

SELECT * FROM posts WHERE LENGTH(content) > 1000;

5. 注意事項

  • LENGTH()函數計算的是字節長度,因此在處理多字節字符集時,返回值可能與預期不同。如果需要計算字符長度,應使用CHAR_LENGTH()函數。
  • 如果字符串包含NULL值,LENGTH()函數將返回NULL

6. 總結

LENGTH()函數是MySQL中一個非常有用的字符串函數,用于計算字符串的字節長度。通過本文的介紹,我們了解了LENGTH()函數的基本用法、與CHAR_LENGTH()函數的區別以及在實際中的應用場景。掌握LENGTH()函數的使用,可以幫助我們更好地處理字符串數據,優化查詢,并進行有效的數據驗證。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72850.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72850.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72850.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Matlab 基于專家pid控制的時滯系統

1、內容簡介 Matlab 185-基于專家pid控制的時滯系統 可以交流、咨詢、答疑 2、內容說明 略 在處理時滯系統(Time Delay Systems)時,使用傳統的PID控制可能會面臨挑戰,因為時滯會導致系統的不穩定或性能下降。專家PID控制通過結…

E902基于bash與VCS的仿真環境建立

網上看見很多E902仿真的文章,但用到的編譯器是類似于這種Xuantie-900-gcc-elf-newlib-x86_64-V3.0.1-20241120,而我按照相應的步驟與對應的編譯器,仿真總會報錯。后面將編譯器換成riscv64-elf-x86_64-20210512,反而成功了。現在開…

SpringSecurity配置(自定義認證過濾器)

文末有本篇文章的項目源碼文件可供下載學習 在這個案例中,我們已經實現了自定義登錄URI的操作,登錄成功之后,我們再次訪問后端中的API的時候要在請求頭中攜帶token,此時的token是jwt字符串,我們需要將該jwt字符串進行解析,查看解析后的User對象是否處于登錄狀態.登錄狀態下,將…

《UNIX網絡編程卷1:套接字聯網API》第1章 簡介

《UNIX網絡編程卷1:套接字聯網API》第1章 簡介 1.1 網絡編程的核心價值與挑戰 網絡編程是實現跨設備通信的技術基礎,其核心目標是通過協議棧實現數據的可靠傳輸與高效交換。在嵌入式系統、云計算、物聯網等領域,網絡編程能力直接決定了系統的…

D-Wave專用量子計算機登頂Science 率先展示在真實場景中的量子優勢(內附下載)

內容來源:量子前哨(ID:Qforepost) 文丨浪味仙 排版丨浪味仙 行業動向:4200字丨16分鐘閱讀 摘要:加拿大專用量子計算機公司 D-Wave 在 Science 期刊發表了論文,題為《Beyond-Classical Compu…

在Ubuntu上安裝MEAN Stack的4個步驟

在Ubuntu上安裝MEAN Stack的4個步驟為:1.安裝MEAN;2.安裝MongoDB;3.安裝NodeJS,Git和NPM;4.安裝剩余的依賴項。 什么是MEAN Stack? 平均堆棧一直在很大程度上升高為基于穩健的基于JavaScript的開發堆棧。…

jmeter將返回的數據寫入csv文件

舉例說明,我需要接口返回體中的exampleid與todoid的數據信息(使用邊界提取器先將其提取),并將其寫入csv文件進行保存 使用后置處理器BeanShell 腳本實例如下 import java.io.*;// 設置要寫入的文件路徑 String filePath "…

Linux下Redis哨兵集群模式搭建(1主2從+3哨兵)

Linux下Redis哨兵集群模式搭建(1主2從3哨兵) 一、Redis哨兵模式搭建 1.安裝包下載 鏈接: https://pan.baidu.com/s/1_n2rCMi5MHX-mVkkyMo4LA 提取碼: gbra 2.新建redis目錄 mkdir -p /app/redis3.解壓到/app/redis目錄下 tar -zxvf redis-6.2.16.ta…

Debian 系統命令集合 |Debian 和 CentOS常見命令的異同

Debian 系統命令集合 Debian 是一個非常流行且穩定的 Linux 發行版,廣泛用于服務器、桌面和工作站環境。 Debian 和 CentOS常見命令 使用方式的對比 注: 部分人(比如我)先學的centos,其實centos和debian 就記住幾十個有區別命…

20250319在榮品的PRO-RK3566開發板的buildroot系統下使用集成的QT應用調試串口UART3

stty -F /dev/ttyS3 115200 -echo cat /dev/ttyS3 & echo serialdata > /dev/ttyS3 20250319在榮品的PRO-RK3566開發板的buildroot系統下使用集成的QT應用調試串口UART3 2025/3/19 14:17 緣起:在榮品的PRO-RK3566開發板的buildroot系統下,在命令…

深入理解 C# 反射 的使用

總目錄 前言 反射是.NET框架中一個強大的特性,允許程序在運行時檢查和操作類型信息。通過反射,開發者可以動態地創建對象、調用方法、訪問屬性等,為程序提供了極大的靈活性。本文將詳細講解C#反射的使用方法及其應用場景。 一、什么是反射&a…

YOLO+OpenCV強強聯手:高精度跌倒檢測技術實戰解析

目錄 關于摔倒檢測 摔倒檢測核心邏輯 摔倒檢測:聯合多種邏輯判斷 原理詳細解釋 1. 導入必要的庫 2. 定義函數和關鍵點連接關系 3. 篩選有效關鍵點并計算邊界框 4. 計算人體上下半身中心點和角度 5. 繪制關鍵點和連接線 6. 繪制角度標注和檢測跌倒 7. 返回處理后的圖…

AI入門7:python三種API方式調用本地Ollama+DeepSeek

回顧 書接上篇:各種方式搭建了本地知識庫: AI入門:AI模型管家婆ollama的安裝和使用-CSDN博客 AI入門2:本地AI部署,用ollama部署deepseek(私有化部署)-CSDN博客 AI入門3:給本地d…

內網安全-橫向移動Kerberos 攻擊SPN 掃描WinRMWinRSRDP

1.WinRM&WinRS 條件: 雙方開啟winrm winrs服務 2008版本以上默認開啟,win 7默認關閉 檢測使用cs內置端口掃描5985開放情況 進行連接 winrs -r:http://192.168.93.30:5985 -u:administrator -p:Whoami2021 whoami 2.內網-spn shell setspn -T …

LoRA中黑塞矩陣、Fisher信息矩陣是什么

LoRA中黑塞矩陣、Fisher信息矩陣是什么 1. 三者的核心概念 黑塞矩陣(Hessian) 二階導數矩陣,用于優化問題中判斷函數的凸性(如牛頓法),或計算參數更新方向(如擬牛頓法)。 Fisher信息矩陣(Fisher Information Matrix, FIM) 統計學中衡量參數估計的不確定性,反映數據…

高級java每日一道面試題-2025年3月04日-微服務篇[Eureka篇]-Eureka是什么?

如果有遺漏,評論區告訴我進行補充 面試官: Eureka是什么? 我回答: 在Java高級面試中,關于Eureka的討論通常會涵蓋其基本概念、組件與架構、工作原理、高級特性以及與其他服務發現工具的比較等多個方面。以下是結合提供的內容對Eureka進行的詳細解析和…

YZi Labs 談對 Plume 的投資:利用區塊鏈創造現實價值的典范項目

3 月 17 日,YZi Labs 宣布投資 RWAfi 賽道項目 Plume,引發市場廣泛關注。本輪融資是 Plume 在 去年 5 月和 12 月 連續兩輪融資后的第三輪融資,代表著市場資本市場對于 Plume RWAfi 敘事以及其發展潛力的高度認可。 本次融資不僅提升了市場對…

互功率譜 cpsd

互功率譜(Cross-Power Spectral Density, CPSD)是信號處理中用于描述兩個信號在頻域中相關性的工具。它表示兩個信號在不同頻率下的功率分布及其相位關系,廣泛應用于模態分析、系統辨識和信號匹配等領域。 matlab 實現 MATLAB 提供了 cpsd 函數來計算互功率譜。以下是使用 …

RocketMQ 架構

一、RocketMQ 核心架構概述 ?1. 主要組件 ?Name Server: 集群的「中樞神經」,負責 Topic 元數據管理(如 Topic 分區分布、Broker 節點狀態監控)。 ?Broker: 消息存儲與流轉的核心節點,負責消息的持久化…

單片機學完開發板,如何繼續提升自己的技能?

很多人學完開發板后都會卡在一個尷尬的階段:覺得自己會的東西不少,但又不知道下一步該干啥。會點C語言,能燒錄程序,能點亮LED,玩轉按鍵,搞定串口等等,能用開發板做點小玩意兒,但面對…