当前位置:网站首页 > 数据科学与大数据 > 正文

sql 数据转换(sql转换值)



适用于:Microsoft Fabric Microsoft Fabric Warehouse 中的 SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics 终结点

在以下情况下,可以转换数据类型:

  • 一个对象的数据移到另一个对象,或两个对象之间的数据进行比较或组合时,数据可能必须从一个对象的数据类型转换为另一个对象的数据类型。
  • 将 TransactSQL 结果列、返回代码或输出参数中的数据移到某个程序变量中时,必须将这些数据从 SQL Server 系统数据类型转换成该变量的数据类型。

在应用程序变量与 SQL Server 结果集列、返回代码、参数或参数标记之间进行转换时,支持的数据类型转换由数据库 API 定义。

可以隐式或显式转换数据类型。

隐式转换对用户不可见。 SQL Server 会自动将数据从一种数据类型转换为另一种数据类型。 例如,将 smallint 与 int 进行比较时,在比较之前,smallint 会被隐式转换为 int

隐式转换为日期样式。 隐式转换为日期样式 。

显式转换使用 或 函数。

CAST 和 CONVERT 函数可将值(局部变量、列或其他表达式)从一种数据类型转换为另一种数据类型。 例如,以下 函数可将数值 转换为字符串

 
  

如果希望 Transact-SQL 程序代码符合 ISO 标准,请使用 而不要使用 。 如果要利用 中的样式功能,请使用 而不要使用 。

以下图例显示了可对 SQL Server 系统提供的数据类型执行的所有显式和隐式数据类型转换。 这些包括 xml、bigint 和sql_variant。 不存在对 sql_variant 数据类型的赋值进行的隐式转换,但是存在转换为 sql_variant 的隐式转换 。

虽然前面的图表说明了 SQL Server 中允许的所有显式和隐式转换,但并未指出转换的结果数据类型。

  • 当 SQL Server 执行显式转换时,语句本身会确定结果数据类型。
  • 对于隐式转换,赋值语句(例如设置变量的值或在列中插入值)将产生由变量声明或列定义所定义的数据类型。
  • 对于比较运算符或其他表达式,结果数据类型取决于数据类型优先级的规则。

例如,以下脚本定义一个类型为 varchar 的变量,将 int 类型值赋给该变量,然后选择该变量与字符串的串联。

 
  

的 int 值会转换为 varchar,因此 语句返回值 。

下面的示例演示改为使用 int 变量的类似脚本:

 
  

在此例中, 语句会引发以下错误:

为了计算表达式 ,SQL Server 先遵循数据类型优先级的规则来完成隐式转换,然后才能计算表达式的结果。 由于 int 的优先级高于 varchar,SQL Server 会尝试将字符串转换为整数,但是会失败,因为此字符串无法转换为整数。 如果表达式提供可以转换的字符串,则该语句会成功,如以下示例所示:

 
  

在此例中,字符串 可以转换为整数值 ,因而此 语句会返回值 。 当提供的数据类型为整数时, 运算符会成为加法而不是串联。

将一个 SQL Server 对象的数据类型转换为另一种数据类型时,不支持某些隐式和显式数据类型转换。 例如,nchar 值无法被转换为 image 值。 只能使用显式转换将 nchar 转换为 binary。 不支持使用隐式方法转换为 binary。 但是,nchar 既可以显式也可以隐式转换为 nvarchar

以下各文章说明对应数据类型展示的转换行为:

  • binary 和 varbinary
  • datetime2
  • money 和 smallmoney
  • bit
  • datetimeoffset
  • smalldatetime
  • char 和 varchar
  • decimal 和 numeric
  • sql_variant
  • date
  • float 和 real
  • time
  • datetime
  • int、bigint、smallint 和 tinyint
  • uniqueidentifier
  • xml
  • json

由于 SQL Server 使用 Transact-SQL 数据类型,而 OLE 自动化使用 Visual Basic 数据类型,因此 OLE 自动化存储过程必须转换在两者之间传递的数据。

下表说明了从 SQL Server 到 Visual Basic 的数据类型转换。

SQL Server 数据类型 Visual Basic 数据类型 charvarchartextnvarcharntext 字符串 decimalnumeric 字符串 bit 布尔值 binaryvarbinaryimage 一维 数组 int Long smallint 整数 tinyint Byte float 双精度 real 单精度 moneysmallmoney 货币 datetimesmalldatetime 日期 设置为 的任意内容 Variant 设置为 Null

除了 binary、varbinary 和 image 值以外,所有单个 SQL Server 值都被转换为单个 Visual Basic 值。 这些值将被转换为 Visual Basic 中的一维 数组。 此数组的范围为 ,其中 length 是 SQL Server binary、varbinary 或 image 值中的字节数。

以下是从 Visual Basic 数据类型到 SQL Server 数据类型的转换。

Visual Basic 数据类型 SQL Server 数据类型 LongIntegerByteBooleanObject int DoubleSingle float 货币 money 日期 datetime 小于或等于 4,000 个字符的 String varchar/ nvarchar 大于 4,000 个字符的 String text/ ntext 小于或等于 8,000 字节的一维 数组 varbinary 大于 8,000 字节的一维 数组 image
  • OLE 自动存储过程 (Transact-SQL)
  • CAST 和 CONVERT (Transact-SQL)
  • 数据类型 (Transact-SQL)
  • COLLATE (Transact-SQL)
到此这篇sql 数据转换(sql转换值)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 数据库增删改查代码(数据库增删改查代码怎么写)2025-11-13 13:27:08
  • mysql主键和索引(mysql主键索引的数据结构)2025-11-13 13:27:08
  • 中文资源数据库8(中文资源数据库8视频)2025-11-13 13:27:08
  • 数据库课程设计案例(数据库课程设计怎么做操作流程)2025-11-13 13:27:08
  • 数据库基础知识面试(数据库基础面试题)2025-11-13 13:27:08
  • 数据库怎么创建dblink(数据库怎么创建数据表)2025-11-13 13:27:08
  • w25q256fv中文手册(w25q256数据手册)2025-11-13 13:27:08
  • 数据分析师一般一个月多少钱(数据分析师一般一个月多少钱广州)2025-11-13 13:27:08
  • sqlldr导入数据错位(sql导入数据报错)2025-11-13 13:27:08
  • 数据库基础知识试题(数据库基础知识题库)2025-11-13 13:27:08
  • 全屏图片