摘要:編程語言中經(jīng)常使用函數(shù)來處理一些字符串,數(shù)字或者其他內(nèi)容。所以如果需要移植要慎重使用函數(shù)。該函數(shù)有兩個參數(shù),第一個參數(shù)為字符串,第二個參數(shù)為字符串長度。還有另外兩個相似函數(shù)去除字符串左側(cè)空格去除字符串右側(cè)空格字符串截取函數(shù)。
編程語言中經(jīng)常使用函數(shù)來處理一些字符串,數(shù)字或者其他內(nèi)容。MySQL也是一樣,可以使用函數(shù)來快速達(dá)到一系列的目的。
在上一篇文章《計(jì)算字段的使用》中,我們提前使用了一個trim函數(shù),來處理字符串兩端的空格。而這篇文章就是專門講解一些實(shí)際工作中常用函數(shù)。
原文鏈接:https://weiya.me/item/67.html
函數(shù)MySQL支持以下常用函數(shù):
文本處理函數(shù)
數(shù)值數(shù)據(jù)處理函數(shù)
日期時間處理函數(shù)
MySQL一些特殊信息,比如版本信息函數(shù)
本篇文章主要介紹:文本處理函數(shù),一般用于處理字符串,比如刪除、填充、轉(zhuǎn)換大小寫等等操作
提示: SQL語句具有較強(qiáng)的可移植性。比如在Mysql中使用的SQL語句,搬到postgresql中使用起來問題也不大。但是,在SQL語句中使用的函數(shù)可移植性較差,實(shí)現(xiàn)相同功能的函數(shù)在不同DBMS中可能完全不一樣。所以如果需要移植SQL要慎重使用函數(shù)。
準(zhǔn)備首先我們先建立一個數(shù)據(jù)表,同時填入一些數(shù)據(jù),下面我們將使用此表
-- ---------------------------- -- Table structure for fun_text -- ---------------------------- DROP TABLE IF EXISTS `fun_text`; CREATE TABLE `fun_text` ( `id` int(11) NOT NULL AUTO_INCREMENT, `content` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of fun_text -- ---------------------------- INSERT INTO `fun_text` VALUES ("1", "1234567890"); INSERT INTO `fun_text` VALUES ("2", "abc"); INSERT INTO `fun_text` VALUES ("3", "ABC"); INSERT INTO `fun_text` VALUES ("4", " abc "); INSERT INTO `fun_text` VALUES ("5", "lee");
下面我們直接列舉一些常用MySQL字符串處理函數(shù),及其用法實(shí)例
LEFT()用于返回字符串左側(cè)的字符。
該函數(shù)有兩個參數(shù),第一個參數(shù)為字符串,第二個參數(shù)為字符串長度。字符串長度為2,就從字符串的左側(cè)截取兩個字符串返回。
SELECT id,LEFT(content,3) AS left_content FROM fun_text WHERE id="1"
我們從上表中返回了id=1的記錄的content字段的左側(cè)3個字符
TIP: 該函數(shù)還有相似函數(shù)RIGHT()用于返回字符串右側(cè)的字符,用法類似。
LENGTH()這個函數(shù)很簡單,返回字符串的長度。
SELECT id,LENGTH(content) AS content_length FROM fun_text WHERE id="1"
我們返回了id=1的記錄的content長度為10
LOCATE()返回一個字符串在另一個字符串中第一次出現(xiàn)的位置,如果沒有發(fā)現(xiàn)就返回0.
SELECT id,LOCATE("234", content) AS locate_content FROM fun_text WHERE id="1";
之前id=1的content字段內(nèi)容為1234567890,234的起始位置為2. 所以,如果在開始位置查找到,那么返回是1而不是0
LOWER()將字符串全部轉(zhuǎn)換為小寫字母
我們使用id=3的記錄來操作。
SELECT id,LOWER(content) AS lower_content FROM fun_text WHERE id="3";
可以看到,之前的大寫ABC被轉(zhuǎn)換成了小寫的字母abc
TIP: 該函數(shù)還有一個相反函數(shù)UPPER()可以將小寫字母均轉(zhuǎn)換為大寫字母
TRIM()去除字符串兩邊的空格。
這次使用id=4的記錄作為演示,content字段兩邊包含了空格。
SELECT id,TRIM(content) AS trim_content FROM fun_text WHERE id="4";
可以看到,字符串兩邊的空格都被去除了。
TIP: 還有另外兩個相似函數(shù):1、LTRIM():去除字符串左側(cè)空格;2、RTRIM()去除字符串右側(cè)空格
SUBSTRING()字符串截取函數(shù)。該函數(shù)與LEFT()和RIGHT()函數(shù)有點(diǎn)兒類似,都可以截取字符串,只不過功能更加強(qiáng)大。
1、從第N個字符串開始截取
SELECT id,SUBSTRING(content,5) AS sub_content FROM fun_text WHERE id="1";
我們使用id=1記錄,截取content字段,并且是從第5個字符串開始截取,所以結(jié)果為567890
2、從第N個字符串開始截取,截取M個字符
SELECT id,SUBSTRING(content,5,2) AS sub_content FROM fun_text WHERE id="1";
這個方法去截取字符串是不是有更多的自由
SOUNDEX()最后說一個不同于之前的字符處理函數(shù)SOUNDEX(),這個函數(shù)可以將一個單詞的讀音轉(zhuǎn)換成與它相似的讀音的單詞。簡單的來說,就是講方言轉(zhuǎn)換為普通話的意思。這個在搜索中十分的好使。
我們拿上面的id=5的記錄來舉個例子,記錄的content值為lee,但是有個方言用戶輸入了lie,無論是模糊查詢還是精確查詢都是無法匹配到lee結(jié)果,但是使用了soundex函數(shù)則可以改變這些。
SELECT * FROM fun_text WHERE SOUNDEX(content) = SOUNDEX("lie");
觀察上面的例子,lie是不等于lee的,但是SOUNDEX(content) = SOUNDEX("lie"),因?yàn)?b>lie和lee的讀音十分相似。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22891.html
摘要:計(jì)算字段是在檢索過程中建立的虛擬字段,他們并不實(shí)際存在于數(shù)據(jù)庫中。計(jì)算字段和程序處理之間關(guān)系數(shù)據(jù)庫這種臨時處理數(shù)據(jù),格式化輸出的結(jié)果,都可以使用編程語言來實(shí)現(xiàn)。之間多個值使用逗號分割。過濾字段上面使用來組合字段。 本文主要介紹Mysql中計(jì)算字段的使用方法 我博客文章地址:http://weiya.me/item/60.html 簡介 在創(chuàng)建數(shù)據(jù)庫表的時候,往往為了數(shù)據(jù)庫的各種性能,我...
摘要:通過請求和響應(yīng)的交換達(dá)成通信協(xié)議中已經(jīng)規(guī)定了請求是從客戶端發(fā)出,最后由服務(wù)端響應(yīng)這個請求并返回。隨后的字符串指明了請求訪問的資源對象。協(xié)議自身不對請求和響應(yīng)之間的通信狀態(tài)進(jìn)行保存,也就是說這個級別。從前發(fā)送請求后需等待并受到響應(yīng)。 showImg(https://segmentfault.com/img/bVbmDsG?w=1024&h=538); http協(xié)議用戶客戶端和服務(wù)器之間的...
閱讀 1285·2023-04-25 23:22
閱讀 1682·2023-04-25 20:04
閱讀 2655·2021-11-22 15:24
閱讀 2820·2021-11-11 16:54
閱讀 1894·2019-08-30 14:03
閱讀 1494·2019-08-29 16:35
閱讀 1714·2019-08-26 10:29
閱讀 2685·2019-08-23 18:01