了解MYSQL Cast函式

2021-06-08 13:54:31 字數 3845 閱讀 4214

mysql cast函式是非常重要的mysql函式,下面就將為您詳細介紹mysql

cast函式的語法及其使用,希望能讓您對mysql cast函式有更多的認識。

binary 

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

mysql>

select 

'a' 

= 'a'; 

->

1 mysql>

select 

binary 

'a' 

= 'a'; 

->

0 mysql>

select 

'a' 

= 'a 

'; ->

1 mysql>

select 

binary 

'a' 

= 'a 

'; ->

0 binary影響整個比較;它可以在任何運算元前被給定,而產生相同的結果。 

binary 

str是cast(str 

as binary)的縮略形式。 

注意,在一些語境中,假如你將乙個編入索引的列派給binary, 

mysql將不能有效使用這個索引。 

假如你想要將乙個blob值或其它二進位制字串進行區分大小寫的比較,你可利用二進位制字串沒有字符集這一事實實現這個目的,這樣就不會有文書夾的概念。為執行乙個區分大小寫的比較,可使用convert()函式將乙個字串值轉化為乙個不區分大小寫的字符集。其結果為乙個非二進位制字串,因此like操作也不會區分大小寫: 

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 

個字元。 

cast() 

and 

convert(... 

using 

...) 

是標準sql語法。convert()的非using 

格式是ofis 

odbc語法。 

帶有using的convert() 

被用來在不同的字符集之間轉化資料。在mysql中, 

自動解碼名和相應的字符集名稱相同。例如。 

這個語句將伺服器的預設字符集中的字串 

'abc'轉化為utf8字符集中相應的字串: 

select 

convert('abc' 

using 

utf8); 

當你想要在乙個create 

... 

select 

語句中建立乙個特殊型別的列,則cast函式會很有用: 

create 

table 

new_table 

select 

cast('2000-01-01' 

as date); 

該函式也用於enum 

列按詞法順序的排序。通常enum列的排序在使用內部數值時發生。將這些值按照詞法順序派給 

char 

結果: 

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() 的字串函式來代替。 

若要在數值語境中將乙個字串派給乙個數值, 

通常情況下,除了將字串值作為數字使用外,你不需要做任何事: 

mysql>

select 

1+'1'; 

->

2 若要在乙個字串語境中使用乙個數字,該數字會被自動轉化為乙個binary 

字串。 

mysql>

select 

concat('hello 

you 

',2); 

->

'hello 

you 

2' mysql支援帶符號和無符號的64位元值的運算。若你正在使用數字操作符(如 

+) 而其中乙個運算元為無符號整數,則結果為無符號。可使用signed 

和unsigned 

cast 

操作符來覆蓋它。將運算分別派給帶符號或無符號64位元整數。 

mysql>

select 

cast(1-2 

as unsigned) 

->

18446744073709551615 

mysql>

select 

cast(cast(1-2 

as unsigned) 

as signed); 

->

-1 注意,假如任意乙個運算元為乙個浮點值,則結果為乙個浮點值,且不會受到上述規則影響 

(關於這一點, decimal 列值被視為浮點值)。 

mysql>

select 

cast(1 

as unsigned) 

- 2.0; 

->

-1.0 

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

MySQL CAST與CONVERT 函式的用法

mysql cast與convert 函式的用法 mysql 的cast 和convert 函式可用來獲取乙個型別的值,並產生另乙個型別的值。兩者具體的語法如下 12 cast value as type convert value,type 就是cast as 型別 convert 型別 可以轉換...

了解UpdataData函式

函式說明 updatedata 是mfc的視窗函式,用來重新整理資料的。updatedata 引數只有乙個,預設為true。updatedata true 重新整理控制項的值到對應的變數。外部輸入值交給內部變數 即 控制項的值 變數。updatedata false 拷貝變數值到控制項顯示。變數的最...

了解mian函式

題目 include stdio.h void print void main 要求在print函式中寫 使整個程式執行後輸出 hello world 注意mian中不能寫入任何 包括呼叫print函式。include stdio.h extern c int cdecl maincrtstartu...