CAST函数是什么?

6
我在SQL中遇到了这些语句,但我不明白使用CAST函数会产生什么输出?
以下是这些语句:
1. cast(date_var - 19000000 as DATE) + 1 as integer 这个语句会输出date_var的下一天吗?
2. cast(substr('date_var',1,6) || '01' as integer) - 10000 我更加困惑这个语句的输出结果是什么?

'date_var'... 它是一个变量吗?还是字符串本身? - Vikrant
1
你尝试执行它们,看看输出是什么了吗?这将是一个很好的第一步。 - SQL_Deadwood
cast 用于转换现有列的数据类型。请参见此处:https://www.techonthenet.com/sql_server/functions/cast.php - Jason Clark
标记您正在使用的数据库管理系统。那段代码是特定于产品的! - jarlh
CAST() 用于将数据从一种数据类型转换为另一种。上述语句将数据类型转换为整数。 - Channa
2个回答

5

CAST或CONVERT将一个数据类型的值显式转换为另一个数据类型。

SQL语法1:

CONVERT( datatype, expression [, style] )

SQL 语法 2:

CAST( expression AS datatype )

参数:

expression:任何类型的表达式。

datatype:新的数据类型。此参数不是表达式。

style:与MS SQL Server兼容的整数值。

转义语法:

{fn CONVERT( expression, datatype )}

返回类型: 与参数数据类型一致的确定性。 示例:

SELECT convert( varchar(30), price )
SELECT convert( nvarchar(30), now(), 102)
SELECT {fn convert( {fn now()}, nvarchar(30))}
SELECT cast( price as varchar(30)

Source


4
CAST()函数可以将任意类型的值转换为指定类型的值。
目标类型可以是以下任何一种类型:BINARY,CHAR,DATE,DATETIME,TIME,DECIMAL,SIGNED,UNSIGNED
语法:- CAST(expr AS type) 例如:1
mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2017-02-06 10:49:00 |
+---------------------+
1 row in set (0.00 sec)

mysql> SELECT CAST(NOW() as DATE);
 +---------------------+
| CAST(NOW() as DATE) |
+---------------------+
| 2017-02-06          |
+---------------------+ 
1 row in set (0.00 sec)

例:-2

mysql> SELECT CAST(-1 as signed);
       +--------------------+
       | CAST(-1 as signed) |
       +--------------------+
       |                 -1 |
       +--------------------+
      1 row in set (0.00 sec)

 mysql> SELECT CAST(-1 as unsigned);
       +----------------------+
       | CAST(-1 as unsigned) |
       +----------------------+
       | 18446744073709551615 |
       +----------------------+
     1 row in set (0.00 sec)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接