mysql型別轉換

2022-09-03 07:03:08 字數 2702 閱讀 5149

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 產生乙個二進位制字串。關於它怎樣影響比較結果的說明見本章中 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() 的樣的字串函式來代替。請參見12.5節,"日期和時間函式"。

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

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 函式型別轉換 mysql 型別轉換函式

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

mysql型別轉換c 型別轉換 C 型別轉換

一 簡介 型別轉換 把資料從一種型別轉換另一種型別 我們要求等號兩邊參與運算子必須型別一致,如果不一致,滿足下列條件會發生自動型別轉換或者隱式型別轉換。1.兩種型別相容 例如 int和double 相容 都是數字型別 2.目標型別大於源型別 double int 顯示型別轉換 1.兩種型別相相容 i...

mysql 型別轉換

在對乙個字段型別為varchar的字段使用max函式進行取最大值查詢時,發現取到的值始終是9,而表中實際的最大值是20,當把字段型別改為int時就可以,沒辦法只能轉換後在查詢。用 cast 或者 convert 函式可用來獲取乙個型別的值,並產生另乙個型別的值。例 cast max price as...