程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL中字符串函數詳細介紹(1)

MySQL中字符串函數詳細介紹(1)

編輯:MySQL綜合教程

符串或串(String)是由零個或多個字符組成的有限序列。一般記為 s='a1a2•••an'(n>=0)。它是編程語言中表示文本的數據類型。

通常以串的整體作為操作對象,如:在串中查找某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。兩個字符串相等的充要條件是:長度相等,並且各個對應位置上的字符都相等。設p、q是兩個串,求q在p中首次出現的位置的運算叫做模式匹配。串的兩種最基本的存儲方式是順序存儲方式和鏈接存儲方式。

下面我們來看看MySQL中的字符串函數

假如結果的長度大於 max_allowed_packet 系統變量的最大值時,字符串值函數的返回值為NULL。

對於在字符串位置操作的函數,第一個位置的編號為 1。

◆ ASCII(str)

返回值為字符串str 的最左字符的數值。假如str為空字符串,則返回值為 0 。假如str 為NULL,則返回值為 NULL。 ASCII()用於帶有從 0到255的數值的字符。

mysql> SELECT ASCII('2');

        -> 50

mysql> SELECT ASCII(2);

        -> 50

mysql> SELECT ASCII('dx');

        -> 100

見 ORD()函數。

◆ BIN(N)

返回值為N的二進制值的字符串表示,其中  N 為一個longlong (BIGINT) 數字。這等同於 CONV(N,10,2)。假如N 為NULL,則返回值為 NULL。

mysql> SELECT BIN(12);
-> '1100'

◆ BIT_LENGTH(str)

返回值為二進制的字符串str 長度。

mysql> SELECT BIT_LENGTH('text');
-> 32

◆ CHAR(N,... [USING charset])

CHAR()將每個參數N理解為一個整數,其返回值為一個包含這些整數的代碼值所給出的字符的字符串。NULL值被省略。

mysql> SELECT CHAR(77,121,83,81,'76');
-> 'MySQL'
mysql> SELECT CHAR(77,77.3,'77.3');
-> 'MMM'

大於 255的CHAR()參數被轉換為多結果字符。 例如,CHAR(256) 相當於 CHAR(1,0), 而CHAR(256*256) 則相當於 CHAR(1,0,0):

mysql> SELECT HEX(CHAR(1,0)), HEX(CHAR(256));
+----------------+----------------+
| HEX(CHAR(1,0)) | HEX(CHAR(256)) |
+----------------+----------------+
| 0100           | 0100           |
+----------------+----------------+
mysql> SELECT HEX(CHAR(1,0,0)), HEX(CHAR(256*256));
+------------------+--------------------+
| HEX(CHAR(1,0,0)) | HEX(CHAR(256*256)) |
+------------------+--------------------+
| 010000           | 010000             |
+------------------+--------------------+

CHAR()的返回值為一個二進制字符串。可選擇使用USING語句產生一個給出的字符集中的字符串:

mysql> SELECT CHARSET(CHAR(0x65)), CHARSET(CHAR(0x65 USING utf8));
mysql> SELECT CHARSET(CHAR(0x65)), CHARSET(CHAR(0x65 USING utf8));
+---------------------+--------------------------------+
| CHARSET(CHAR(0x65)) | CHARSET(CHAR(0x65 USING utf8)) |
+---------------------+--------------------------------+
| binary              | utf8                           |
+---------------------+--------------------------------+

如果 USING已經產生,而結果字符串不符合給出的字符集,則會發出警告。同樣,如果嚴格的SQL模式被激活,則CHAR()的結果會成為 NULL。

◆ CHAR_LENGTH(str)

返回值為字符串str 的長度,長度的單位為字符。一個多字節字符算作一個單字符。對於一個包含五個二字節字符集, LENGTH()返回值為 10, 而CHAR_LENGTH()的返回值為5。

◆ CHARACTER_LENGTH(str)

CHARACTER_LENGTH()是CHAR_LENGTH()的同義詞。

◆ COMPRESS(string_to_compress)

壓縮一個字符串。這個函數要求 MySQL已經用一個諸如zlib的壓縮庫壓縮過。   否則,返回值始終是NULL。UNCOMPRESS() 可將壓縮過的字符串進行解壓縮。

mysql> SELECT LENGTH(COMPRESS(REPEAT('a',1000)));
-> 21
mysql> SELECT LENGTH(COMPRESS(''));
-> 0
mysql> SELECT LENGTH(COMPRESS('a'));
-> 13
mysql> SELECT LENGTH(COMPRESS(REPEAT('a',16)));
-> 15

壓縮後的字符串的內容按照以下方式存儲:

空字符串按照空字符串存儲。

非空字符串未壓縮字符串的四字節長度進行存儲(首先為低字節),後面是壓縮字符串。如果字符串以空格結尾,就會在後加一個"."號,以防止當結果值是存儲在CHAR或VARCHAR類型的字段列時,出現自動把結尾空格去掉的現象。(不推薦使用 CHAR 或VARCHAR 來存儲壓縮字符串。最好使用一個 BLOB 列代替)。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved