搜尋
首頁資料庫mysql教程MySQL實用函數大總結

MySQL實用函數大總結

Dec 02, 2020 pm 04:51 PM
mysql

mysql影片教學欄位介紹實用函數。

MySQL實用函數大總結

相關免費學習推薦:#mysql影片教學

##MySQL函數大全和函數講解,管理MYSQL資料一定會用到。


附註 :  mysql的下標是從1開始

  1. ASCII(str)     傳回字串str的最左面字元的
    ASCII代碼值。如果str是空字串,則回傳0。如果str是NULL,則回傳NULL
  2. mysql> select ASCII('2');
        -> 50
    mysql> select ASCII(2);
        -> 50
    mysql> select ASCII('dx');
        -> 100
  1. ORD(str)      如果字串str最左面字元是一個多位元組字符,透過以格式((first byte ASCII code)
    256 (second byte ASCII code))[256 third byte ASCII code...]傳回字元的ASCII代碼值來傳回多位元組字元代碼。如果最左面的字元不是一個多位元組字元。傳回與ASCII()函數傳回的相同值。
  2. mysql> select ORD('2');
        -> 50
  1. CONV(N,from_base,to_base)      在不同的進位之間轉換數位。傳回數字
    N的字串數字,從from_base進位轉換為to_base進制,如果任何參數是NULL,則傳回NULL。參數N解釋為一個整數,但是可以指定為一個整數或一個字串。最小進制是2且最大的進制是36。如果to_base是一個負數,N被認為是一個有符號數,否則,N被當作無符號數。 CONV以64位點精度工作。 即:
    N是要轉換的數據,from_base是原進制,to_base是目標進位。
  2. mysql> select CONV("a",16,2);
        -> '1010'
    mysql> select CONV("6E",18,8);
        -> '172'
    mysql> select CONV(-17,10,-18);
        -> '-H'
    mysql> select CONV(10+"10"+'10'+0xa,10,10);
        -> '40'
  1. BIN(N)      返回二進位值N的一個字串表示,在此
    N是一個長整數( BIGINT)數字,這等價於CONV(N,10,2)。如果NNULL,回傳NULL
  2. mysql> select BIN(12);
        -> '1100'
  1. OCT(N)      返回八進位值N的一個字串的表示,在此N是長整數數字,這等價於
    CONV(N,10,8)。如果NNULL,回傳``。
  2. mysql> select OCT(12);
        -> '14'
  1. HEX(N)      返回十六進位值
    N一個字串的表示,在此N是一個長整型(BIGINT)數字,這等價於CONV(N,10,16)。如果NNULL,回傳NULL
  2. mysql> select HEX(255);
        -> 'FF'
  1. CHAR(N,...)      
    CHAR()將參數解釋為整數並且傳回由這些整數的ASCII程式碼字元組成的一個字串。 NULL值被跳過。
  2. mysql> select CHAR(77,121,83,81,'76');
        -> 'MySQL'
    mysql> select CHAR(77,77.3,'77.3');
        -> 'MMM'
  1. CONCAT(str1,str2,...)      則傳回來自參數連結的字串。如果任何參數是
    NULL,則傳回NULL。可以有超過2個的參數。一個數字參數被變換為等價的字串形式。
  2. mysql> select CONCAT('My', 'S', 'QL');
        -> 'MySQL'
    mysql> select CONCAT('My', NULL, 'QL');
        -> NULL
    mysql> select CONCAT(14.3);
        -> '14.3'
9.

LENGTH(str)OCTET_LENGTH(str)CHAR_LENGTH(str)CHARACTER_LENGTH( str)      傳回字串str的長度。

注意,對於多位元組字符,其CHAR_LENGTH()只計算一次。

mysql> select LENGTH('text');
    -> 4
mysql> select LENGTH('简书');
    -> 6
mysql> select OCTET_LENGTH('text');
    -> 4
mysql> select OCTET_LENGTH('简书');
    -> 6
mysql> select CHAR_LENGTH('text');
    -> 4
mysql> select CHAR_LENGTH('简书');
    -> 2
mysql> select CHARACTER_LENGTH('text');
    -> 4
mysql> select CHARACTER_LENGTH('简书');
    -> 2
  1. LOCATE(substr,str)POSITION(substr IN str)      返回子字串substr在字串str第一個出現的位置,如果substr不是在str裡面,回傳0。
  2. mysql> select LOCATE('bar', 'foobarbar');
        -> 4
    mysql> select LOCATE('xbar', 'foobar');
        -> 0
此函數是多位元組可靠的。

  1. LOCATE(substr,str,pos)      返回子字串substr在字串str第一個出現的位置,從位置pos開始。如果substr不是在str裡面,回傳0。
  2. mysql> select LOCATE('bar', 'foobarbar',5);
        -> 7
此函數是多位元組可靠的。

  1. INSTR(str,substr)
          返回子串substr在字符串str中的第一个出现的位置。这与有2个参数形式的LOCATE()相同,除了参数被颠倒。
mysql> select INSTR('foobarbar', 'bar');
    -> 4
mysql> select INSTR('xbar', 'foobar');
    -> 0
  1. LPAD(str,len,padstr)
          返回字符串str,左面用字符串padstr填补直到str是len个字符长。
mysql> select LPAD('hi',7,'abc');
    -> 'abcabhi'
  1. RPAD(str,len,padstr)
          返回字符串str,右面用字符串padstr填补直到str是len个字符长。
mysql> select RPAD('hi',7,'abc');
    -> 'hiabcab'
  1. LEFT(str,len)
          返回字符串str的最左面len个字符。
mysql> select LEFT('foobarbar', 5);
    -> 'fooba'
  1. RIGHT(str,len)
          返回字符串str的最右面len个字符。
mysql> select RIGHT('foobarbar', 4);
    -> 'rbar'
  1. SUBSTRING(str,pos,len)SUBSTRING(str FROM pos FOR len)MID(str,pos,len)
          从字符串str返回一个len个字符的子串,从位置pos开始。使用FROM的变种形式是ANSI SQL92语法。
mysql> select SUBSTRING('Quadratically',5,6);
    -> 'ratica'
mysql> select SUBSTRING('helloworld' FROM 2 FOR 5);
    -> 'ellow'
mysql> select MID('helloworld' FROM 2 FOR 5);
    -> 'ellow'

SUBSTR用法同SUBSTRING

  1. SUBSTRING_INDEX(str,delim,count)
          返回从字符串str的第count个出现的分隔符delim之后的子串。如果count是正数,返回最后的分隔符到左边(从左边数) 的所有字符。如果count是负数,返回最后的分隔符到右边的所有字符(从右边数)。
mysql> select SUBSTRING_INDEX('www.mysql.com', '.', 2);
    -> 'www.mysql'
mysql> select SUBSTRING_INDEX('www.mysql.com', '.', -2);
    -> 'mysql.com'
  1. LTRIM(str)
          返回删除了其前置空格字符的字符串str。
mysql> select LTRIM('     barbar');
    -> 'barbar'
  1. RTRIM(str)
          返回删除了其拖后空格字符的字符串str。
mysql> select RTRIM('barbar   ');
    -> 'barbar'
  1. TRIM([remstr FROM] str)TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
          返回字符串str,其所有remstr前缀或后缀被删除了。如果没有修饰符BOTH、LEADING或TRAILING给出,BOTH被假定。如果remstr没被指定,空格被删除(中间空格不删除)。
 mysql> SELECT TRIM('  bar  bar   ');
         -> 'bar  bar'
 mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');   --删除指定的首字符 x
         -> 'barxxx'
 mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');      --删除指定的首尾字符 x
         -> 'bar'
 mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');  --删除指定的尾字符 x
         -> 'barx'
  1. SOUNDEX(str)
          返回str的一个同音字符串。听起来“大致相同”的2个字符串应该有相同的同音字符串。一个“标准”的同音字符串长是4个字符,但是SOUNDEX()函数返回一个任意长的字符串。你可以在结果上使用SUBSTRING()得到一个“标准”的 同音串。所有非数字字母字符在给定的字符串中被忽略。所有在A-Z之外的字符国际字母被当作元音。
mysql> select SOUNDEX('Hello');
    -> 'H400'
mysql> select SOUNDEX('Quadratically');
    -> 'Q36324'
  1. SPACE(N)
          返回由N个空格字符组成的一个字符串。
mysql> select SPACE(6);
    -> '     '
  1. REPLACE(str,from_str,to_str)
          返回字符串str,其字符串from_str的所有出现由字符串to_str代替。
mysql> select REPLACE('www.mysql.com', 'w', 'Ww');
    -> 'WwWwWw.mysql.com'
  1. REPEAT(str,count)
          返回由重复countTimes次的字符串str组成的一个字符串。如果count NULL,返回NULL
mysql> select REPEAT('MySQL', 3);
    -> 'MySQLMySQLMySQL'
  1. REVERSE(str)
          返回颠倒字符顺序的字符串str。
mysql> select REVERSE('abc');
    -> 'cba'
  1. INSERT(str,pos,len,newstr)
          返回字符串str,在位置pos起始的子串且len个字符长得子串由字符串newstr代替。
mysql> select INSERT('Quadratic', 3, 4, 'What');
    -> 'QuWhattic'
  1. ELT(N,str1,str2,str3,...)
          如果N= 1,返回str1,如果N= 2,返回str2,等等。如果N小于1或大于参数个数,返回NULLELT()FIELD()反运算。
mysql> select ELT(1, 'ej', 'Heja', 'hej', 'foo');
    -> 'ej'
mysql> select ELT(4, 'ej', 'Heja', 'hej', 'foo');
    -> 'foo'
  1. FIELD(str,str1,str2,str3,...)
          返回str在str1, str2, str3, ...清单的索引。如果str没找到,返回0。FIELD()ELT()反运算。
mysql> select FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
    -> 2
mysql> select FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
    -> 0
  1. FIND_IN_SET(str,strlist)
          如果字符串str在由N子串组成的表strlist之中,返回一个1到N的值。一个字符串表是被“,”分隔的子串组成的一个字符串。如果第一个参数是一个常数字符串并且第二个参数是一种类型为SET的列,FIND_IN_SET()函数被优化而使用位运算!如果str不是在strlist里面或如果strlist是空字符串,返回0。如果任何一个参数是NULL,返回NULL。如果第一个参数包含一个“,”,该函数将工作不正常。
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
   -> 2
  1. MAKE_SET(bits,str1,str2,...)
          返回一个集合 (包含由“,”字符分隔的子串组成的一个字符串),由相应的位在bits集合中的的字符串组成。str1对应于位0,str2对应位1,等等。在str1, str2, ...中的NULL串不添加到结果中。
mysql> SELECT MAKE_SET(1,'a','b','c');
    -> 'a'
mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');
    -> 'hello,world'
mysql> SELECT MAKE_SET(1 | 4,'hello','nice',NULL,'world');
-> 'hello'
mysql> SELECT MAKE_SET(0,'a','b','c');
    -> ''

说明
bits应将期转为二进制,如,1为,0001,倒过来排序,则为1000,将bits后面的字符串str1,str2等,放置在这个倒过来的二进制排序中,取出值为1对应的字符串,则得到hello.

1|4表示进行或运算,为0001 | 0100,得0101,倒过来排序,为1010,则'hello','nice','world'得到的是hello word。'hello','nice',NULL,'world'得到的是hello。NULL不取,只有1才取对应字符串.

  1. EXPORT_SET(bits,on,off,[separator,[number_of_bits]])
          返回一个字符串,在这里对于在“bits”中设定每一位,你得到一个“on”字符串,并且对于每个复位(reset)的位,你得到一个“off”字符串。每个字符串用“separator”分隔(缺省“,”),并且只有“bits”的“number_of_bits” (缺省64)位被使用。
mysql> select EXPORT_SET(5,'Y','N',',',4)
    -> Y,N,Y,N
  1. LCASE(str)LOWER(str)
          返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成小写。该函数对多字节是可靠的。
mysql> select LCASE('QUADRATICALLY');
    -> 'quadratically'
  1. UCASE(str)UPPER(str)
          返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成大写。该函数对多字节是可靠的。
mysql> select UCASE('Hello');
    -> 'HELLO'
  1. LOAD_FILE(file_name)
          读入文件并且作为一个字符串返回文件内容。文件必须在服务器上,你必须指定到文件的完整路径名,而且你必须有file权限。文件必须所有内容都是可读的并且小于max_allowed_packet。如果文件不存在或由于上面原因之一不能被读出,函数返回NULL
mysql> UPDATE table_name
      SET blob_column=LOAD_FILE("/tmp/picture")
      WHERE id=1;
  1. CONCAT(str1,str2,...)
          将多个字符串连接成一个字符串,返回结果为连接参数产生的字符串。如有任何一个参数为NULL,则返回值为 NULL。或许有一个或多个参数。 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col)
mysql> SELECT CONCAT('My','S','ql');
    -> ‘MySQL’
mysql> SELECT CONCAT('My', NULL, 'ql');
    -> NULL
mysql> SELECT CONCAT(14.3);
    -> '14.3'

MySQL必要时自动变换数字为字符串,并且反过来也如此:

mysql> SELECT 1+"1";
    -> 2
mysql> SELECT CONCAT(2,' test');
    -> '2 test'
  1. CONCAT_WS(separator,str1,str2,…)
          CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。   第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为NULL,则结果为NULL。函数会忽略任何分隔符参数后的 NULL 值。
mysql>select CONCAT_WS(',','First name','Second name','Last Name');
    -> 'First name,Second name,Last Name'
mysql> select CONCAT_WS(',','First name',NULL,'Last Name');
    -> 'First name,Last Name'

 CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。

以上是MySQL實用函數大總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:简书。如有侵權,請聯絡admin@php.cn刪除
MySQL索引基數如何影響查詢性能?MySQL索引基數如何影響查詢性能?Apr 14, 2025 am 12:18 AM

MySQL索引基数对查询性能有显著影响:1.高基数索引能更有效地缩小数据范围,提高查询效率;2.低基数索引可能导致全表扫描,降低查询性能;3.在联合索引中,应将高基数列放在前面以优化查询。

MySQL:新用戶的資源和教程MySQL:新用戶的資源和教程Apr 14, 2025 am 12:16 AM

MySQL學習路徑包括基礎知識、核心概念、使用示例和優化技巧。 1)了解表、行、列、SQL查詢等基礎概念。 2)學習MySQL的定義、工作原理和優勢。 3)掌握基本CRUD操作和高級用法,如索引和存儲過程。 4)熟悉常見錯誤調試和性能優化建議,如合理使用索引和優化查詢。通過這些步驟,你將全面掌握MySQL的使用和優化。

現實世界Mysql:示例和用例現實世界Mysql:示例和用例Apr 14, 2025 am 12:15 AM

MySQL在現實世界的應用包括基礎數據庫設計和復雜查詢優化。 1)基本用法:用於存儲和管理用戶數據,如插入、查詢、更新和刪除用戶信息。 2)高級用法:處理複雜業務邏輯,如電子商務平台的訂單和庫存管理。 3)性能優化:通過合理使用索引、分區表和查詢緩存來提升性能。

MySQL中的SQL命令:實踐示例MySQL中的SQL命令:實踐示例Apr 14, 2025 am 12:09 AM

MySQL中的SQL命令可以分為DDL、DML、DQL、DCL等類別,用於創建、修改、刪除數據庫和表,插入、更新、刪除數據,以及執行複雜的查詢操作。 1.基本用法包括CREATETABLE創建表、INSERTINTO插入數據和SELECT查詢數據。 2.高級用法涉及JOIN進行表聯接、子查詢和GROUPBY進行數據聚合。 3.常見錯誤如語法錯誤、數據類型不匹配和權限問題可以通過語法檢查、數據類型轉換和權限管理來調試。 4.性能優化建議包括使用索引、避免全表掃描、優化JOIN操作和使用事務來保證數據一致性

InnoDB如何處理酸合規性?InnoDB如何處理酸合規性?Apr 14, 2025 am 12:03 AM

InnoDB通過undolog實現原子性,通過鎖機制和MVCC實現一致性和隔離性,通過redolog實現持久性。 1)原子性:使用undolog記錄原始數據,確保事務可回滾。 2)一致性:通過行級鎖和MVCC確保數據一致。 3)隔離性:支持多種隔離級別,默認使用REPEATABLEREAD。 4)持久性:使用redolog記錄修改,確保數據持久保存。

MySQL的位置:數據庫和編程MySQL的位置:數據庫和編程Apr 13, 2025 am 12:18 AM

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

MySQL:從小型企業到大型企業MySQL:從小型企業到大型企業Apr 13, 2025 am 12:17 AM

MySQL適合小型和大型企業。 1)小型企業可使用MySQL進行基本數據管理,如存儲客戶信息。 2)大型企業可利用MySQL處理海量數據和復雜業務邏輯,優化查詢性能和事務處理。

幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?Apr 13, 2025 am 12:16 AM

InnoDB通過Next-KeyLocking機制有效防止幻讀。 1)Next-KeyLocking結合行鎖和間隙鎖,鎖定記錄及其間隙,防止新記錄插入。 2)在實際應用中,通過優化查詢和調整隔離級別,可以減少鎖競爭,提高並發性能。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。