CAST功能有什么作用?

时间:2017-02-06 05:07:34

标签: sql casting

我在SQL中遇到这些语句,我不明白使用 CAST 函数输出的是什么?

这些是陈述:

  1. cast(date_var - 19000000 as DATE) + 1 as integer
  2. 这会输出date_var的第二天吗?

    1. cast(substr('date_var',1,6) || '01' as integer) - 10000
    2. 我对这个输出会更加困惑吗?

2 个答案:

答案 0 :(得分:4)

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

SQL语法1:

CONVERT( datatype, expression [, style] )

SQL语法2:

CAST( expression AS datatype )

参数:         表达 任何类型的任何表达。 数据类型

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

与MS SQL Server兼容的整数值。

转义语法:

{fn CONVERT( expression, datatype )}

返回类型:         使用参数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

答案 1 :(得分:2)

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)