通常以串的整體作為操作對象,如:在串中查找某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。兩個字符串相等的充要 條件是:長度相等,并且各個對應位置上的字符都相等。設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()的返回值為一個二進制字符串??蛇x擇使用USING語句產生一個給出的字符集中的字符串:
mysql> SELECT CHARSET(CHAR(0×65)), CHARSET(CHAR(0×65 USING utf8));mysql> SELECT CHARSET(CHAR(0×65)), CHARSET(CHAR(0×65 USING utf8));+———————+——————————–+| CHARSET(CHAR(0×65)) | CHARSET(CHAR(0×65 USING utf8)) |+———————+——————————–+| binary | utf8 |+———————+——————————–+
如果 USING已經產生,而結果字符串不符合給出的字符集,則會發出警告。同樣,如果嚴格的SQL模式被激活,則CHAR()的結果會成為 NULL。
◆ CHAR_LENGTH(str)
返回值為字符串str 的長度,長度的單位為字符。一個多字節字符算作一個單字符。對于一個包含五個二字節字符集, LENGTH()返回值為 10, 而CHAR_LENGTH()的返回值為5。