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