sql-基礎-字符串函數

  字符串函數分爲四類。

  基礎,查詢(位置,子字符串,長度),新增,修改。

  格式,填充,trim,大小寫。

  轉換,進制類,字符集類,其他數據類型。

  工具,生成,加密 & 解密,轉義,其他。

1、基礎

1.1   查詢

1.1.1  位置

  分爲兩類,在單個字符串中尋找某個字符串的位置。在字符串集合中搜索某個字符串的位置。

  1.1.1.1    position(單個)

  格式: position(search_str in str)

  說明:搜索search_str在str中的位置。不存在時返回0,若search_str或str爲null時返回null。

     參數:

     search_str關鍵詞。

  str: 被搜索的字符串

  示例:

  position('a' in 'abc') // 返回1

  注意:起始位置爲1,不是0. 當多次出現時,只返回第一次出現的位置

  類似的函數:instr(str, search_str)

  1.1.1.2   locate(單個)

  比position多一個參數,該參數指定搜索的起始位置。

  locate(‘a’, ‘abca’, 1); // 返回1,和position完全相同

  locate(‘a’, ‘abca’, 2); // 返回4。

  1.1.1.3   field & find_in_set(多個)

  格式:field(target, str1, str2,strN)   find_in_set(target,strList)

  說明:在str集合中查詢target的位置。

  參數:

  str1, str2, strN:提供N個字符串,組成一個集合

  strList由1到N個字符串拼接而成,用逗號分隔。

  示例:

  field(‘a’,’a’,’b’,’c’)  // 返回1

  find_in_set(‘a’,’a,b,c’) // 與上面功能相同

  1.1.2  長度

  1.1.2.1  length

   length(‘ab’); // 返回2,計算字符串的長度。

  1.1.3  子串

   1.1.3.1  substring & substr & mid

  格式:substring(str, start, length)

  描述:截取子字符串。

  參數:

  start起始位置,負數時,從右往左。

  length:截取的長度,若未指定,默認到末尾。

  示例:

  substring(‘abc’,1); // 返回bc

  substring(‘abc’,-1); // 返回c

  類似的函數:mid(str, start, len)

  1.1.3.2   left & right

  left(str, length) // 返回str的前length個字符,當length爲負數時,從末尾開始。

  right(str,length) // 從右到左。

 1.2  新增

   1.2.1  concat & concat_ws

  格式:concat(str1, str2...) concat_ws(separator, str1, str2...)

  描述:在上一個字符串的末尾添加下一個字符串。

  參數:

  Str: 1到N個子字符串。

  separator: 分隔符,若未指定,默認爲逗號

  示例: 

  select concat(‘hello’, ‘ ’, ‘world’) // 返回hello world

  select ‘hello’ || ‘ ’ || world // 相同的效果

 1.3  修改

   1.3.1  insert

  格式:insert(str, start, length, substr)

  說明:在str的開始位置,結束位置之間,使用substr替換。

   1.3.2  replace

  格式:replace(str, old_str, new_str)

  描述:替換字符串。

  參數:

  old_str被替換的字符串。若不存在,則什麼都不做。

  new_str: 用來替換的新字符串

  示例:

  select replace('aba', 'a', 'd'); // 返回dbd

  注意:不是光替換第一次,而是替換所有的字符串

2、格式

  2.1 去除

   2.1.1  trim & ltrim & rtrim

  格式:trim( [ [{LEADING | TRAILING | BOTH}] [removal_char] FROM ] target_string)

  描述:在開頭,末尾刪除字符串中的所有特定字符。當未指定特定字符時,默認爲空格。

  參數:

  {LEADING | TRAILING | BOTH}指定刪除位置,LEADING開頭,TRAILING末尾,BOTH包含開頭和末尾。默認值爲both

  removal_char: 特定字符,默認情況下爲空格。

  from target_string: 指定字符串。

  示例:

  trim(‘xxxWHISKEYxxx’); // 返回源字符串,位置參數爲both,特定字符爲空字符串。

  trim(' WHISKEY   '); // 返回WHISKEY,位置參數爲BOTH,特定字符串爲空字符串。

  trim(LEADING from ' WHISKEY   '); // 等價於ltrim

  trim(TRAILING from ' WHISKEY   '); // 等價於rtrim。

  trim(BOTH 'x' FROM 'xxxWHISKEYxxx'); // 返回WHISKEY,位置參數BOTH有沒有都是一樣的。

  類似的函數:

  ltrim(str);// 相當於位置參數爲LEADING, 特殊字符爲空格

  rtrim(str);// 相當於位置參數爲TRAILING, 特殊字符爲空格

 2.2  填充

 2.2.1   lpad

  格式:lpad(str, len, padStr)

  描述:在str的開頭用padStr填充,直到str字符串的長度爲len。

  參數:

  len填充完成之後的字符串長度,若小於原始長度,相當於截取。

  padStr填充的字符串

  示例:

  select lpad('ab', 5, 'b'); // 返回bbbab

  select lpad('ab', 1, 'b'); // 返回a

  類似的函數:

  select rpad('ab', 5, 'b'); // 返回abbbb

 2.3  大小寫

  2.3.1  lower & upper

  返回字符串的大小寫,不改變源字符串。

  select lower(‘AbC’); // 返回abc

  select upper(‘aBc’); // 返回ABC

3、轉換

  3.1  字符集

   3.1.1    ascii & char

  ascii(‘A’); // 返回65, 字母的ASCII碼

  char(num); // 字符集數字對應的字符,參數爲65時返回A

 3.2  進制

  bin(str) // 將字符串轉換爲二進制

  oct(str) // 將字符串轉換爲八進制

  hex(str) // 將字符串轉換爲十六進制

  unhex(str) // 將十六進制轉換爲對應的字符串。

4、工具

  4.1  生成

  4.1.1  repeat

  select repeat(‘a’,3); // 返回aaa,str重複n次。

  4.1.2 reverse

  select reverse(‘ab’); //返回ba,原字符串倒序。

  4.1.3 space

  select space(n);  // 返回n個空格

  4.1.4  UUID

  select UUID(); // 返回唯一ID

  4.2  加密

   4.2.1 to_base64

  select to_base64(str);  // 返回用base64加密的字符串。

  4.3 轉義

  4.3.1 quote

  quote("a'b'c") // 返回'a\'b\'c', 將str中的特殊字符進行轉義。

 4.4 其他

   4.4.1 strcmp

  格式: strcmp(str1, str2)

  說明:str1和str2做比較,大於返回1,小於返回-1,等於返回0

  示例:

  select strcmp(‘a’,’b’); // 返回-1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章