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

Mysql計算字段長度函數(shù)之CHAR_LENGTH函數(shù)

 更新時間:2023年05月18日 11:53:20   作者:山茶花開時。  
mysql中計算字符串長度有兩個函數(shù)分別為char_length和length,char_length函數(shù)可以計算unicode字符,下面這篇文章主要給大家介紹了關(guān)于Mysql計算字段長度函數(shù)之CHAR_LENGTH函數(shù)的相關(guān)資料,需要的朋友可以參考下

CHAR_LENGTH函數(shù)用于返回字符串的長度,長度單位為字符

不管漢字,數(shù)字或是字母都算是一個字符,包括中英文標(biāo)點符號,空格也算是一個字符

語法結(jié)構(gòu)

CHAR_LENGTH(str)

str:計算長度的字符串 

示例

-- 4
SELECT CHAR_LENGTH('test');
-- 12
SELECT CHAR_LENGTH('Hello World!');
-- 2
SELECT CHAR_LENGTH('小胡');
-- 3
SELECT CHAR_LENGTH('123');
-- 4
SELECT CHAR_LENGTH(',,,,');
-- 2
SELECT CHAR_LENGTH('  ');
-- 0
SELECT CHAR_LENGTH('');
-- Null
SELECT CHAR_LENGTH(NULL);

案例:對過長的昵稱進行截取處理

導(dǎo)入數(shù)據(jù)

drop table if exists user_info;
CREATE TABLE user_info (
    id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
    uid int UNIQUE NOT NULL COMMENT '用戶ID',
    `nick_name` varchar(64) COMMENT '昵稱',
    achievement int COMMENT '成就值',
    level int COMMENT '用戶等級',
    job varchar(32) COMMENT '職業(yè)方向',
    register_time datetime COMMENT '注冊時間'
)CHARACTER SET utf8 COLLATE utf8_general_ci;
INSERT INTO user_info(uid,`nick_name`,achievement,`level`,job,register_time) VALUES
  (1001, '牛客1', 19, 0, '算法', '2020-01-01 10:00:00'),
  (1002, '???號', 1200, 3, '算法', '2020-01-01 10:00:00'),
  (1003, '牛客3號♂', 22, 0, '算法', '2020-01-01 10:00:00'),
  (1004, '???號', 25, 0, '算法', '2020-01-01 11:00:00'),
  (1005, '牛客5678901234號', 4000, 7, '算法', '2020-01-01 10:00:00'),
  (1006, '???7890123456789號', 25, 0, '算法', '2020-01-02 11:00:00');

user_info表(用戶信息表)

uid: 用戶ID   nick_name: 昵稱   achievement: 成就值   level: 等級   job: 職業(yè)方向

register_time: 注冊時間 

問題:

有的用戶的昵稱特別長,在一些展示場景會導(dǎo)致樣式混亂,因此需要將特別長的昵稱轉(zhuǎn)換一下再輸出,請輸出字符數(shù)大于10的用戶信息,對于字符數(shù)大于13的用戶輸出前10個字符然后加上三個點號: "..."

-- 解法1
SELECT uid, IF(CHAR_LENGTH(nick_name) > 13,CONCAT(LEFT(nick_name,10),'...'),nick_name)AS nick_name
FROM user_info
WHERE CHAR_LENGTH(nick_name) > 10;
-- 解法2
SELECT uid,
       (CASE WHEN CHAR_LENGTH(nick_name) <= 13 THEN nick_name
             ELSE CONCAT(SUBSTRING(nick_name,1,10),'...')
        END)AS nick_name
FROM user_info
WHERE CHAR_LENGTH(nick_name) > 10;

結(jié)果展示:

解釋: 字符數(shù)大于10的用戶有1005和1006,長度分別為13、17,因此需要對1006的昵稱截斷輸出  

附:CHAR_LENGTH()和LENGTH()的區(qū)別

無論是LENGTH()還是CHAR_LENGTH()都是為了統(tǒng)計字符串的長度。只不過,LENGTH()是按照字節(jié)來統(tǒng)計的,CHAR_LENGTH()是按照字符來統(tǒng)計的。例如:一個包含5個字符且每個字符占兩個字節(jié)(比如漢字)的字符串而言,LENGTH()返回長度10,CHAR_LENGTH()返回長度是5;如果對于單字節(jié)的字符,則兩者返回結(jié)果相同。

一、char_length('string')/char_length(column_name)

1、返回值為字符串string或者對應(yīng)字段長度,長度的單位為字符,一個多字節(jié)字符(例如,漢字)算作一個單字符;

2、不管漢字還是數(shù)字或者是字母都算是一個字符;

3、任何編碼下,多字節(jié)字符都算是一個字符; 

二、length('string')/length(column_name)

1、utf8字符集編碼下,一個漢字是算三個字符,一個數(shù)字或字母算一個字符。

2、其他編碼下,一個漢字算兩個字符, 一個數(shù)字或字母算一個字符。

總結(jié)

到此這篇關(guān)于Mysql計算字段長度函數(shù)之CHAR_LENGTH函數(shù)的文章就介紹到這了,更多相關(guān)Mysql CHAR_LENGTH函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論