MySQL中VARCHAR的單位

前言

VARCHAR是MySQL中常用的數(shù)據(jù)類型,但其單位究竟是字符還是字節(jié)呢?

官方說明

經(jīng)過查閱,MySQL的 官方文檔給出了答案:

4.1及之后的版本,VARCHAR的單位是字符;4.1之前的版本,VARCHAR的單位是字節(jié)。(As of version 4.1, MySQL interprets length specifications in character column definitions in character units. (Before MySQL 4.1, column lengths were interpreted in bytes.) This applies to CHAR, VARCHAR and the TEXT types.)

同時(shí)官方文檔也提到,4.1及之后的版本以UTF-8作為預(yù)定義字符集。(VARCHAR is shorthand for CHARACTER VARYING. NATIONAL VARCHAR is the standard SQL way to define that a VARCHAR column should use some predefined character set. MySQL 4.1 and up uses UTF8 as this predefined character set.)

計(jì)算方法

在 Go 語言中,是不能用 len 函數(shù)來統(tǒng)計(jì)字符串中的字符個(gè)數(shù)的,這是因?yàn)樵?Go 中,字符串是以 UTF-8 為格式進(jìn)行存儲(chǔ)的,在字符串上調(diào)用 len 函數(shù),取得的是字符串包含的 byte 的個(gè)數(shù)。

那么如何在Go語言中獲取字符串中的字符個(gè)數(shù)呢?有下面幾種方法:

  • 使用 bytes.Count() 統(tǒng)計(jì)
  • 使用 strings.Count() 統(tǒng)計(jì)
  • 將字符串轉(zhuǎn)換為 []rune 后調(diào)用 len 函數(shù)進(jìn)行統(tǒng)計(jì)
  • 使用 utf8.RuneCountInString() 統(tǒng)計(jì)

測試發(fā)現(xiàn)速度最快的是 utf8.RuneCountInString()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、數(shù)據(jù)庫簡介 1.數(shù)據(jù)庫系統(tǒng) 1.1數(shù)據(jù)庫 DataBase【DB】,指的是長期保存到計(jì)算機(jī)上的數(shù)據(jù),按照一定順...
    鄭元吉閱讀 684評論 0 6
  • 1.MySQL與字符集 2.正確使用字符集 3.MySQL客戶端與字符集 4.字符集編碼轉(zhuǎn)換原理 5.字符集常見處...
    hedgehog1112閱讀 1,721評論 0 0
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,919評論 0 13
  • 心如止水,氣勢如泓,每天一局,想要一個(gè)長期的開黑好友呀
    白白木頭閱讀 268評論 0 1
  • 先聲明哈:我做的這個(gè)也是跟著被人學(xué)習(xí)的,寫文章是為了復(fù)習(xí)思路,還有鞏固一下。總而言之呢,就是為了多理解思路,多折騰...
    醬油_閱讀 1,943評論 10 13

友情鏈接更多精彩內(nèi)容