程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 帶您深入了解MYSQL Cast函數

帶您深入了解MYSQL Cast函數

編輯:MySQL綜合教程

MYSQL Cast函數是非常重要的MYSQL函數,下面就將為您詳細介紹MYSQL Cast函數的語法及其使用,希望能讓您對MYSQL Cast函數有更多的認識。

BINARY    
BINARY操作符將後面的字符串拋給一個二進制字符串。這是一種簡單的方式來促使逐字節而不是逐字符的進行列比較。這使得比較區分大小寫,即使該列不被定義為BINARY或BLOB。BINARY也會產生結尾空白,從而更加顯眼。  

  1. mysql>   SELECT   'a'   =   'A';     
  2.       
  3.                   ->   1     
  4.       
  5. mysql>   SELECT   BINARY   'a'   =   'A';     
  6.                    ->   0     
  7. mysql>   SELECT   'a'   =   'a   ';     
  8.                    ->   1     
  9. mysql>   SELECT   BINARY   'a'   =   'a   ';     
  10.                    ->   0    

BINARY影響整個比較;它可以在任何操作數前被給定,而產生相同的結果。    
   
BINARY   str是CAST(str   AS   BINARY)的縮略形式。  
   
注意,在一些語境中,假如你將一個編入索引的列派給BINARY,   MySQL將不能有效使用這個索引。    
假如你想要將一個BLOB值或其它二進制字符串進行區分大小寫的比較,你可利用二進制字符串沒有字符集這一事實實現這個目的,這樣就不會有文書夾的概念。為執行一個區分大小寫的比較,可使用CONVERT()函數將一個字符串值轉化為一個不區分大小寫的字符集。其結果為一個非二進制字符串,因此LIKE操作也不會區分大小寫:   

  1. SELECT   'A'   LIKE   CONVERT(blob_col   USING   latin1)   FROM   tbl_name;     

若要使用一個不同的字符集,   替換其在上述語句中的latin1名。  
   
CONVERT()一般可用於比較出現在不同字符集中的字符串。     
CAST(expr   AS   type),   CONVERT(expr,type)   ,   CONVERT(expr   USING   transcoding_name)    
CAST()   和CONVERT()   函數可用來獲取一個類型的值,並產生另一個類型的值。    
   
這個類型   可以是以下值其中的一個:       
BINARY[(N)]    
CHAR[(N)]    
DATE    
DATETIME    
DECIMAL    
SIGNED   [INTEGER]    
TIME    
UNSIGNED   [INTEGER]    
BINARY   產生一個二進制字符串。
   
假如給定了隨意長度N,則 BINARY[N] 使cast使用該參數的不多於   N   個字節。同樣的,CHAR[N]會使cast使用該參數的不多於N   個字符。    

  1. CAST()   and   CONVERT(...   USING   ...)   是標准SQL語法。CONVERT()的非USING   格式是ofis   ODBC語法。  

帶有USING的CONVERT()   被用來在不同的字符集之間轉化數據。在MySQL中,   自動譯碼名和相應的字符集名稱相同。例如。   這個語句將服務器的默認字符集中的字符串   'abc'轉化為utf8字符集中相應的字符串:   

  1. SELECT   CONVERT('abc'   USING   utf8);    

當你想要在一個CREATE   ...   SELECT   語句中創建一個特殊類型的列,則cast函數會很有用:   

  1. CREATE   TABLE   new_table   SELECT   CAST('2000-01-01'   AS   DATE);    

該函數也用於ENUM   列按詞法順序的排序。通常ENUM列的排序在使用內部數值時發生。將這些值按照詞法順序派給   CHAR   結果:   

  1. SELECT   enum_col   FROM   tbl_name   ORDER   BY   CAST(enum_col   AS   CHAR);    


CAST(str   AS   BINARY)和BINARY   str相同。 CAST(expr   AS   CHAR)將表達式視為一個帶有默認字符集的字符串。    
   
若用於一個諸如CONCAT('Date:   ',CAST(NOW()   AS   DATE))這樣的比較復雜的表達式的一部分,CAST()也會改變結果。  
   
你不應在不同的格式中使用CAST()來析取數據,但可以使用諸如LEFT() 或 EXTRACT() 的字符串函數來代替。   

若要在數值語境中將一個字符串派給一個數值,   通常情況下,除了將字符串值作為數字使用外,你不需要做任何事:   

  1. mysql>   SELECT   1+'1';     
  2.                 ->   2    

若要在一個字符串語境中使用一個數字,該數字會被自動轉化為一個BINARY   字符串。   

  1. mysql>   SELECT   CONCAT('hello   you   ',2);     
  2.                   ->   'hello   you   2'    

MySQL支持帶符號和無符號的64比特值的運算。若你正在使用數字操作符(如   +)  而其中一個操作數為無符號整數,則結果為無符號。可使用SIGNED   和UNSIGNED   cast   操作符來覆蓋它。將運算分別派給帶符號或無符號64比特整數。 

  1. mysql>   SELECT   CAST(1-2   AS   UNSIGNED)     
  2.                   ->   18446744073709551615     
  3. mysql>   SELECT   CAST(CAST(1-2   AS   UNSIGNED)   AS   SIGNED);     
  4.                   ->   -1    

注意,假如任意一個操作數為一個浮點值,則結果為一個浮點值,且不會受到上述規則影響   (關於這一點, DECIMAL 列值被視為浮點值)。     

  1. mysql>   SELECT   CAST(1   AS   UNSIGNED)   -   2.0;     
  2.                   ->   -1.0     
  3.      

若你在一個算術運算中使用了一個字符串,它會被轉化為一個浮點數。 

帶您了解mysql CONCAT()函數

查看三種MySQL字符集的方法

查看MySQL默認字符集

MySQL定義外鍵的方法

帶參數的MySql存儲過程

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved