1. cast()
CAST()
在 MySQL 中用于将一个表达式的类型转换为另一个类型。这在处理不同类型的数据时非常有用,比如将字符串转换为数字,或者将浮点数转换为整数等。
1.1 CAST() 函数的基本语法
CAST()
函数的基本语法如下:
sql
CAST(expression AS type)
expression
:要转换的原始表达式。type
:目标类型,可以是 BINARY、CHAR、DATE、SIGNED、UNSIGNED、FLOAT、DOUBLE、DECIMAL 等。
1.2 常用类型和格式:
BINARY
:二进制格式。CHAR
:字符串格式。DATE
:日期格式。TIME
:时间格式。DATETIME
:日期时间格式。SIGNED
:有符号整数。UNSIGNED
:无符号整数。FLOAT
:浮点数。DOUBLE
:双精度浮点数。DECIMAL
:小数。
1.3 示例
-
将字符串转换为整数:
sqlSELECT CAST('123' AS SIGNED) AS integer_column;
结果将是:
integer_column: 123
-
将整数转换为字符串:
sqlSELECT CAST(123 AS CHAR) AS string_column;
结果将是:
string_column: '123'
-
将浮点数转换为整数:
sqlSELECT CAST(123.456 AS SIGNED) AS integer_column;
结果将是:
integer_column: 123
-
将字符串转换为日期:
sqlSELECT CAST('2024-05-29' AS DATE) AS date_column;
结果将是:
date_column: 2024-05-29
-
将日期转换为字符串:
sqlSELECT CAST('2024-05-29' AS CHAR) AS string_column;
结果将是:
string_column: '2024-05-29'
-
将浮点数转换为小数:
sqlSELECT CAST(123.456 AS DECIMAL(10, 2)) AS decimal_column;
结果将是:
decimal_column: 123.46
这里的
DECIMAL(10, 2)
指定了小数点前的位数为 10,小数点后的位数为 2。 -
将二进制字符串转换为整数:
sqlSELECT CAST(BINARY '11001' AS UNSIGNED) AS integer_column;
结果将是:
integer_column: 25
CAST()
函数在数据处理和转换中非常有用,尤其是在数据导入和报告生成时,可以确保数据类型的正确性和一致性。
2. 其他常用的数据类型转换函数
在 MySQL 中,除了 CAST()
函数,还有几个其他函数也常用于数据类型转换:
-
CONVERT()
: 与CAST()
类似,但语法略有不同,并且可以用于转换为不同的数据类型。sqlCONVERT(expression, type)
或者
sqlCONVERT(type, expression)
CONVERT()
可以用于将字符串转换为日期时间,或者在转换时指定不同的字符集。 -
BIN()
: 将整数转换为二进制字符串。sqlBIN(number)
-
HEX()
: 将整数转换为十六进制字符串。sqlHEX(string_or_number)
-
OCT()
: 将整数转换为八进制字符串。sqlOCT(number)
-
ELT()
: 根据索引值返回字符串数组中的一个值,常用于条件转换。sqlELT(index, str1, str2, ...)
-
FIELD()
: 与ELT()
类似,但可以处理多个参数,返回第一个匹配值的字符串。sqlFIELD(str, str1, str2, ...)
-
INET_ATON()
: 将点分十进制的 IP 地址转换为无符号整数。sqlINET_ATON(string)
-
INET_NTOA()
: 将无符号整数转换为点分十进制的 IP 地址。sqlINET_NTOA(inet_address)
-
RAND()
: 返回一个随机浮点数。sqlRAND([number])
-
SIGN()
: 返回参数的符号,-1 表示负数,0 表示零,1 表示正数。sqlSIGN(number)
-
ASCII()
: 返回字符串的第一个字符的 ASCII 值。sqlASCII(string)
-
CHAR_LENGTH()
或LENGTH()
: 返回字符串的长度。sqlCHAR_LENGTH(string)
-
CHARACTER_LENGTH()
: 与CHAR_LENGTH()
类似,返回字符串的长度。sqlCHARACTER_LENGTH(string)
-
LOWER()
: 将字符串转换为小写。sqlLOWER(string)
-
UPPER()
: 将字符串转换为大写。sqlUPPER(string)
-
LTRIM()
: 去除字符串左侧的空格。sqlLTRIM(string)
-
RTRIM()
: 去除字符串右侧的空格。sqlRTLRIM(string)
-
TRIM()
: 去除字符串两侧的空格。sqlTRIM([str,] string)
-
DATE_FORMAT()
: 将日期时间格式化为字符串。sqlDATE_FORMAT(date, format)
-
TIME_FORMAT()
: 将时间格式化为字符串。sqlTIME_FORMAT(time, format)
这些函数可以在不同的场景下使用,以实现数据类型的转换和处理。