欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

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

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

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

官方文檔

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

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

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

跳轉(zhuǎn)后可以看到一個(gè)函數(shù)表格,包括了接近60個(gè)字符串函數(shù),我們需要查詢字符串長(zhǎng)度的函數(shù),使用CTRL + F查找關(guān)鍵詞length,大致篩選出以下5個(gè)函數(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返回字符串的長(zhǎng)度(以字節(jié)為單位)
OCTET_LENGTH()Synonym for LENGTH()LENGTH()的同義詞

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

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

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

結(jié)論

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

附:MySQL SELECT語(yǔ)句查詢字符串長(zhǎng)度大于、小于或等于指定值

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

查詢某字段長(zhǎng)度大于10的記錄:

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

查詢某字段長(zhǎng)度小于或等于5的記錄:

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

后語(yǔ)

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

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

相關(guān)文章

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

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

    有個(gè)采用子查詢的DELETE執(zhí)行得非常慢,改寫成SELECT后執(zhí)行卻很快,最后把這個(gè)子查詢DELETE改寫成JOIN優(yōu)化過(guò)程
    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)變量三個(gè)方面,可以通過(guò)命令行、配置文件或SQL語(yǔ)句進(jìn)行設(shè)置和查看,服務(wù)器選項(xiàng)和系統(tǒng)變量可以是全局或會(huì)話級(jí)別的,狀態(tài)變量只讀且不可修改,sql_mode是一個(gè)特殊的變量,影響SQL語(yǔ)句的執(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)行期間,只要?jiǎng)e的事務(wù)修改數(shù)據(jù)并提交,即可讀到人家修改的數(shù)據(jù),所以會(huì)有不可重復(fù)讀、幻讀問(wèn)題,下文相關(guān)介紹需要的朋友可以參考下
    2022-03-03
  • Mysql單庫(kù)遷移的操作方法

    Mysql單庫(kù)遷移的操作方法

    這篇文章主要介紹了Mysql單庫(kù)遷移的相關(guān)知識(shí),包括導(dǎo)出數(shù)據(jù)庫(kù)文件,上傳至目標(biāo)機(jī)器的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    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語(yǔ)句以及結(jié)合子查詢進(jìn)行遷移,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • MySQL死鎖套路之唯一索引下批量插入順序不一致

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

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

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

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

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

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

    詳解MySQL幻讀及如何消除

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

    mysql?binlog?回滾示例解析

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

最新評(píng)論