日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL字符串长度

發(fā)布時間:2023/12/3 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL字符串长度 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)載自??MySQL字符串長度

在本教程中,您將了解MySQL字符串長度函數(shù),使您可以以字節(jié)為單位獲取字符串的長度。

MySQL支持各種字符集,如latin1,utf8等。可以使用SHOW CHARACTER SET語句來獲取MySQL數(shù)據(jù)庫服務(wù)器支持的所有字符集。

mysql> SHOW CHARACTER SET; +----------+---------------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +----------+---------------------------------+---------------------+--------+ | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | dec8 | DEC West European | dec8_swedish_ci | 1 | | cp850 | DOS West European | cp850_general_ci | 1 | | hp8 | HP West European | hp8_english_ci | 1 | | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 | | latin1 | cp1252 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | | swe7 | 7bit Swedish | swe7_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | | hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 | | tis620 | TIS620 Thai | tis620_thai_ci | 1 | | euckr | EUC-KR Korean | euckr_korean_ci | 2 | | koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 | | gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 | | greek | ISO 8859-7 Greek | greek_general_ci | 1 | | cp1250 | Windows Central European | cp1250_general_ci | 1 | | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | | cp866 | DOS Russian | cp866_general_ci | 1 | | keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 | | macce | Mac Central European | macce_general_ci | 1 | | macroman | Mac West European | macroman_general_ci | 1 | | cp852 | DOS Central European | cp852_general_ci | 1 | | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | | utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 | | cp1251 | Windows Cyrillic | cp1251_general_ci | 1 | | utf16 | UTF-16 Unicode | utf16_general_ci | 4 | | utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 | | cp1256 | Windows Arabic | cp1256_general_ci | 1 | | cp1257 | Windows Baltic | cp1257_general_ci | 1 | | utf32 | UTF-32 Unicode | utf32_general_ci | 4 | | binary | Binary pseudo charset | binary | 1 | | geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 | | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 | | eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 | | gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 | +----------+---------------------------------+---------------------+--------+ 41 rows in set

Maxlen列存儲字符集的字節(jié)數(shù)。在MySQL中,一個字符串可以是任何字符集。 如果一個字符串包含1個字節(jié)的字符,則其字符長度和以字節(jié)為單位測量的長度相等。 但是,如果字符串包含多字節(jié)字符,則其字節(jié)長度通常大于字符長度。

要獲取以字節(jié)為單位的字符串長度,請使用LENGTH函數(shù),如下所示:

LENGTH(str);

可以使用CHAR_LENGTH函數(shù)獲取字符串的長度,以字符為單位計(jì)算長度,如下所示:

CHAR_LENGTH(str);

?

LENGTH和CHAR_LENGTH函數(shù)的示例

我們來看看下面的內(nèi)容:

mysql> SET @s = CONVERT('MySQL String Length' USING ucs2); SELECT CHAR_LENGTH(@s), LENGTH(@s); Query OK, 0 rows affected+-----------------+------------+ | CHAR_LENGTH(@s) | LENGTH(@s) | +-----------------+------------+ | 19 | 38 | +-----------------+------------+ 1 row in set

上面查詢語句是如何工作的?

  • 首先,我們將MySQL字符串長度字符串轉(zhuǎn)換為ucs2字符集,這是UCS-2 Unicode,指定一個字符存儲為2個字節(jié)。
  • 其次,分別使用CHAR_LENGTH和LENGTH函數(shù)來獲取@s字符串的長度(以字節(jié)為單位)。因?yàn)?#64;s字符串以2個字節(jié)來存儲每個字符,所以其字符長度為19,而字節(jié)長度為38?。

以下語句演示了LENGTH和CHAR_LENGTH函數(shù)如何使用1個字節(jié)來存儲每個字符:

SET @s = CONVERT('MySQL string length' USING latin1); SELECT LENGTH(@s), CHAR_LENGTH(@s);

執(zhí)行上面查詢語句,得到以下結(jié)果 -

+------------+-----------------+ | LENGTH(@s) | CHAR_LENGTH(@s) | +------------+-----------------+ | 19 | 19 | +------------+-----------------+ 1 row in set

我們使用latin1字符集來存儲@s字符串。?latin1字符集是使用1個字節(jié)來存儲每個字符的; 因此,其字節(jié)長度和字符長度相等。

請注意,某些字符集可以更改字符的存儲字節(jié)數(shù),例如,utf8字符集:

SET @s = CONVERT('MySQL String Length' USING utf8); SELECT CHAR_LENGTH(@s), LENGTH(@s);

執(zhí)行上面查詢語句,得到以下結(jié)果 -

mysql> SET @s = CONVERT('MySQL String Length' USING utf8); SELECT CHAR_LENGTH(@s), LENGTH(@s); Query OK, 0 rows affected+-----------------+------------+ | CHAR_LENGTH(@s) | LENGTH(@s) | +-----------------+------------+ | 19 | 19 | +-----------------+------------+ 1 row in set

CHAR_LENGTH和LENGTH返回相同的結(jié)果。 但是,如果一個字符串有特殊字符,結(jié)果是不同的。 請參閱以下示例:

mysql> SET @s = CONVERT('á' USING utf8); SELECT CHAR_LENGTH(@s), LENGTH(@s); Query OK, 0 rows affected+-----------------+------------+ | CHAR_LENGTH(@s) | LENGTH(@s) | +-----------------+------------+ | 1 | 2 | +-----------------+------------+ 1 row in set

中文字符串存儲多少位?看看下面查詢就知道了 -

mysql> SET @s = CONVERT('易百教程' USING utf8); SELECT CHAR_LENGTH(@s), LENGTH(@s); Query OK, 0 rows affected+-----------------+------------+ | CHAR_LENGTH(@s) | LENGTH(@s) | +-----------------+------------+ | 4 | 12 | +-----------------+------------+ 1 row in set

?

一個應(yīng)用程序的MySQL字符串長度函數(shù)

假設(shè)我們有一個posts表,用于存儲具有四列:postid,?title,?excerpt?和?content(為了演示目的,所以posts表盡可能簡單)。

首先,我們使用CREATE TABLE語句創(chuàng)建posts表:

USE testdb; CREATE TABLE posts(postid int auto_increment primary key,title varchar(255) NOT NULL,excerpt varchar(255) NOT NULL,content text,pubdate datetime )Engine=InnoDB;

其次,通過使用INSERT語句將一些博客帖子插入到posts表中:

INSERT INTO posts(title,excerpt,content) VALUES('MySQL Length','MySQL string length function tutorial','dummy'),('Second blog post','Second blog post','dummy');

我們可以使用CHAR_LENGTH函數(shù)來檢查是否有超過20個字符,如果超過了,則附加省略號(...),如下查詢語句:

SELECT postid,title,IF(CHAR_LENGTH(excerpt) > 20,CONCAT(LEFT(excerpt,20), '...'),excerpt) summary FROM posts;

執(zhí)行上面查詢語句,得到以下結(jié)果 -

+--------+------------------+-------------------------+ | postid | title | summary | +--------+------------------+-------------------------+ | 1 | MySQL Length | MySQL string length ... | | 2 | Second blog post | Second blog post | +--------+------------------+-------------------------+ 2 rows in set

在SELECT語句中,我們使用IF函數(shù)來檢查摘錄列的長度是否大于20,并使用CONCAT語句將excerpt列的值與省略號(...)連接起來,否則只是獲取全部摘錄(excerpt)內(nèi)容。

在本教程中,我們向您展示了如何使用MySQL字符串長度函數(shù)來獲取字符串的長度(以字節(jié)為單位)。

總結(jié)

以上是生活随笔為你收集整理的MySQL字符串长度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。