字符串函數列表

比日期和時間更多的功能——只有 String 類型。SQL 中的哪個由 CHAR(n) 和 VARCHAR(n) 類型給出。讓我們回顧一下其中最受歡迎的:

功能 描述
1個 長度(str) 以字節為單位返回傳遞的字符串的長度
2個 CHAR_LENGTH(str) 以字符形式返回傳遞的字符串的長度
3個 定位(substr,str), 在類似於 indexOf() 方法的字符串中搜索子字符串
4個 定位(substr,str,pos) 從 pos 開始搜索字符串中的子字符串
5個 CONCAT(str1,str2,...) 連接多行
6個 SUBSTR(), SUBSTRING() 返回由一系列字符給出的子字符串
7 降低(str) 將字符串轉換為小寫
8個 上(str) 將字符串轉換為大寫
9 代替() 替換字符串中的子字符串
10 匹配() 檢查字符串是否匹配給定的模式
十一 修剪(海峽) 修剪字符串開頭和結尾的空字符
12 LTRIM(海峽) 修剪字符串開頭的空字符
13 RTRIM(海峽) 修剪字符串末尾的空字符
14 TO_BASE64(str) 將字符串轉換為 Base64
15 FROM_BASE64(str) 從 Base64 轉換字符串

我特意將功能分成小組,以便更容易理解如何使用它們。下面我們將考慮每組中的一個函數。您可以在官方文檔中找到處理字符串的完整函數列表。

讓我們轉換字符串

讓我們首先處理最簡單的函數,這些函數只是將字符串轉換為稍微不同的形式。例如,將字符串轉換為大寫和小寫。通常,它們的行為類似於 Java 語言中的相同函數。

所以我只給出一個表格和幾個例子。

# 要求 結果
1個 選擇長度('文本') 4個
2個 選擇長度('你好') 12
3個 選擇較低的('嗨') 你好
4個 選擇上層('你好') 你好
5個 選擇SUBSTR ('你好', 2, 3) 里夫
6個 SELECT SUBSTR('嗨,你好嗎?',8) 你好嗎?

這些函數按預期工作,就像它們在 JDK 中的對應函數一樣。

唯一需要注意的是:在第一行中,結果是 4,而不是 8。問題是請求中使用了 1 個字節(ASCII 編碼)來對拉丁字符進行編碼。但如果您使用數據庫中的數據,則字符串的長度將取決於數據庫編碼設置。使用數據庫時你會發現很多驚喜:)

字符串的複雜操作

好吧,讓我們看看使用字符串時更複雜的事情。你會想出什麼...

讓我們從任務表中顯示任務,如果任務截止日期已經過去,則在任務描述中添加 EXPIRED 一詞!

聽起來不錯。雖然我們還沒有了解複雜的條件,但讓我們稍微簡化一下任務。讓我們編寫一個顯示過去任務列表的查詢,但一定要在標題中添加單詞“EXPIRED!” 。.

為此,我們必須使用 CONCAT 函數:

   SELECT CONCAT( 'EXPIRED! ', name) FROM task 
   WHERE deadline < CURDATE() 

此查詢的結果將是:

連接('過期!',名稱)
已到期!修復一個前端bug

推薦。如果您只需要將數據轉換為稍微不同的形式,那麼這也可以在 Java 代碼級別完成。但是如果你想使用 SQL 服務器端的字符串函數(在 WHERE 內部),那麼你肯定離不開它們。