亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL數(shù)據(jù)庫怎么正確查詢字符串長度

 更新時間:2023年06月05日 09:20:29   作者:midasism  
MySQL中字符串長度一般指數(shù)據(jù)庫表中一個字段或列中存儲的字符串的最大長度,有時我們需要測量字符串長度,來保證表結(jié)構(gòu)及數(shù)據(jù)庫性能穩(wěn)定,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫怎么正確查詢字符串長度的相關(guān)資料,需要的朋友可以參考下

前言

筆者最近有一個需求,需要將一段文字插入到備注字段remark前面。

由于擔(dān)心插入后超過字段長度的限制,所以需要統(tǒng)計(jì)線上數(shù)據(jù),根據(jù)長度倒序查詢remark最長的一批數(shù)據(jù)看看長度。

剛開始百度了一下 MySQL如何查看字段長度,看到了length(),于是就寫了這條sql:

select length(remark) from t_card order by length(remark) desc limit 10;

這個字段類型是varchar(512),而查出來的10條數(shù)據(jù)基本都大于512,給我整懵了,當(dāng)時就懷疑這個函數(shù)返回的不是字符數(shù)量,于是決定探究一下MySQL如何獲取字符串長度。

官方文檔

既然網(wǎng)上答案參差不齊,不如就去找找權(quán)威的官方文檔。

進(jìn)入MySQL文檔首頁 https://dev.mysql.com/doc/ ,選擇下方的參考手冊,根據(jù)版本筆者選擇了MySQL 5.7 Reference Manual。

進(jìn)入手冊后,因?yàn)槲覀円樵冏址暮瘮?shù),所以左側(cè)目錄選擇String Functions and Operators

跳轉(zhuǎn)后可以看到一個函數(shù)表格,包括了接近60個字符串函數(shù),我們需要查詢字符串長度的函數(shù),使用CTRL + F查找關(guān)鍵詞length,大致篩選出以下5個函數(shù):

函數(shù)名解釋原文翻譯
BIT_LENGTH()Return length of argument in bits返回參數(shù)的bit數(shù)
CHAR_LENGTH()Return number of characters in argument返回參數(shù)中的字符數(shù)
CHARACTER_LENGTH()Synonym for CHAR_LENGTH()CHAR_LENGTH()的同義詞
LENGTH()Return the length of a string in bytes返回字符串的長度(以字節(jié)為單位)
OCTET_LENGTH()Synonym for LENGTH()LENGTH()的同義詞

我們可以看到這些函數(shù)返回值的單位有bit、字節(jié)、字符數(shù),弄清楚單位之間的轉(zhuǎn)換關(guān)系就能更好的理解查詢結(jié)果的含義。
我們知道字節(jié)是計(jì)算機(jī)最小的存儲單位,1字節(jié)等于8 bit,那么存儲1個字符需要用到多少字節(jié)呢?這個和使用的編碼集有關(guān),查詢手冊https://dev.mysql.com/doc/refman/5.7/en/charset-unicode.html,以我們最常用的UTF-8為例:

  • 字母、數(shù)字和標(biāo)點(diǎn)符號:1字節(jié)
  • 大多數(shù)歐洲和中東文字:2字節(jié)
  • 韓語、中文和日語文字:3字節(jié)或4字節(jié)

看到這里,最開始的疑惑就能解開了,varchar設(shè)置的是字符數(shù)量,而筆者sql中使用的是LENGTH(),查詢的是字符串的字節(jié)數(shù),而備注基本都是中文,結(jié)果就大概是字符數(shù)的兩到三倍。

結(jié)論

筆者的核心需求是獲取字符串長度,所以這里應(yīng)該使用CHAR_LENGTH() 或者同義函數(shù)CHARACTER_LENGTH()

附:MySQL SELECT語句查詢字符串長度大于、小于或等于指定值

在MySQL中查詢字符串長度使用length關(guān)鍵字,具體用法如下:

查詢某字段長度大于10的記錄:

select * from tablename  where length(字段名)>10

查詢某字段長度小于或等于5的記錄:

select * from tablename  where length(字段名) <= 5

后語

本文通過查閱官方文檔解決一個簡單的MySQL問題,旨在記錄和鞭策自身建立一種健康的學(xué)習(xí)方式,主動探究問題,而不只是簡單地獲取他人的解決方案。

到此這篇關(guān)于MySQL數(shù)據(jù)庫怎么正確查詢字符串長度的文章就介紹到這了,更多相關(guān)MySQL查詢字符串長度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql優(yōu)化系列 DELETE子查詢改寫優(yōu)化

    mysql優(yōu)化系列 DELETE子查詢改寫優(yōu)化

    有個采用子查詢的DELETE執(zhí)行得非常慢,改寫成SELECT后執(zhí)行卻很快,最后把這個子查詢DELETE改寫成JOIN優(yōu)化過程
    2016-08-08
  • MySQL?中的服務(wù)器配置和狀態(tài)詳解(MySQL?Server?Configuration?and?Status)

    MySQL?中的服務(wù)器配置和狀態(tài)詳解(MySQL?Server?Configuration?and?Statu

    MySQL服務(wù)器配置和狀態(tài)設(shè)置包括服務(wù)器選項(xiàng)、系統(tǒng)變量和狀態(tài)變量三個方面,可以通過命令行、配置文件或SQL語句進(jìn)行設(shè)置和查看,服務(wù)器選項(xiàng)和系統(tǒng)變量可以是全局或會話級別的,狀態(tài)變量只讀且不可修改,sql_mode是一個特殊的變量,影響SQL語句的執(zhí)行模式,感興趣的朋友一起看看吧
    2025-02-02
  • MySQL?RC事務(wù)隔離的實(shí)現(xiàn)原理

    MySQL?RC事務(wù)隔離的實(shí)現(xiàn)原理

    這篇文章主要介紹了MySQL?RC事務(wù)隔離的實(shí)現(xiàn),Read?Committed,事務(wù)運(yùn)行期間,只要別的事務(wù)修改數(shù)據(jù)并提交,即可讀到人家修改的數(shù)據(jù),所以會有不可重復(fù)讀、幻讀問題,下文相關(guān)介紹需要的朋友可以參考下
    2022-03-03
  • Mysql單庫遷移的操作方法

    Mysql單庫遷移的操作方法

    這篇文章主要介紹了Mysql單庫遷移的相關(guān)知識,包括導(dǎo)出數(shù)據(jù)庫文件,上傳至目標(biāo)機(jī)器的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • MySQL根據(jù)條件遷移數(shù)據(jù)的幾種方法實(shí)現(xiàn)

    MySQL根據(jù)條件遷移數(shù)據(jù)的幾種方法實(shí)現(xiàn)

    本文主要介紹了MySQL根據(jù)條件遷移數(shù)據(jù)的實(shí)現(xiàn),包括使用INSERT INTO SELECT、UPDATE、DELETE語句以及結(jié)合子查詢進(jìn)行遷移,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • MySQL死鎖套路之唯一索引下批量插入順序不一致

    MySQL死鎖套路之唯一索引下批量插入順序不一致

    這篇文章主要給大家介紹了關(guān)于MySQL死鎖套路之唯一索引下批量插入順序不一致的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者M(jìn)ySQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 解決mysql.server?start執(zhí)行報(bào)錯ERROR!The?server?quit?without?updating?PID?file

    解決mysql.server?start執(zhí)行報(bào)錯ERROR!The?server?quit?without?u

    這篇文章主要介紹了解決mysql.server?start執(zhí)行報(bào)錯ERROR!The?server?quit?without?updating?PID?file問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 結(jié)合PHP腳本添加和查詢MySQL數(shù)據(jù)的基本教程

    結(jié)合PHP腳本添加和查詢MySQL數(shù)據(jù)的基本教程

    這篇文章主要介紹了結(jié)合PHP腳本添加和查詢MySQL數(shù)據(jù)的基本教程,即在PHP程序中使用基本的SELECT FROM和INSERT INTO語句,需要的朋友可以參考下
    2015-12-12
  • 詳解MySQL幻讀及如何消除

    詳解MySQL幻讀及如何消除

    這篇文章主要介紹了詳解MySQL 幻讀及解決方法,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-03-03
  • mysql?binlog?回滾示例解析

    mysql?binlog?回滾示例解析

    嚴(yán)格來說mysqlbinlog 不能算回滾,他只是將過去的數(shù)據(jù)修改記錄 重新執(zhí)行一遍,但是從結(jié)果上來看,他也算把數(shù)據(jù)恢復(fù)到任意時間點(diǎn)了,這篇文章主要介紹了mysql?binlog回滾示例解析,需要的朋友可以參考下
    2023-08-08

最新評論