sql_variant 比较

sql_variant 列可以包含具有几种基本数据类型和排序规则的值,所以当比较 sql_variant 操作数时,要应用一些特殊规则。这些规则适用于各种比较操作,例如:

Transact-SQL 比较运算符

ORDER BY、GROUP BY

索引

MAX 和 MIN 聚合函数

UNION(不包括 ALL)

CASE 表达式

为了进行 sql_variant 比较,SQL Server 数据类型层次结构顺序划分为数据类型系列。sql_variant 系列的优先级最高。

数据类型层次结构

数据类型系列

sql_variant

sql_variant

datetime

日期和时间

smalldatetime

日期和时间

Float

近似数值

Real

近似数值

decimal

精确数值

money

精确数值

smallmoney

精确数值

bigint

精确数值

int

精确数值

smallint

精确数值

tinyint

精确数值

bit

精确数值

nvarchar

Unicode

nchar

Unicode

varchar

Unicode

char

Unicode

varbinary

Binary

binary

Binary

uniqueidentifier

Uniqueidentifier

以下规则适用于 sql_variant 比较:

比较具有不同基本数据类型的 sql_variant 值,而且基本数据类型属于不同的数据类型系列时,认为在层次结构图中数据类型系列较高的值为两值中的较大值。

比较具有不同基本数据类型的 sql_variant 值,而且基本数据类型属于相同的数据类型系列时,层次结构图中基本数据类型较低的值先隐式转换成其他数据类型,然后再进行比较。

在比较 char、varchar、nchar 或 varchar 数据类型的 sql_variant 值时,将基于以下条件进行计算:LCID、LCID 版本、比较标志和排序 ID。各个条件按所列出的顺序作为整数值进行比较。

应用这些规则在 sql_variant 值之间进行比较与在具有相同基本数据类型的值之间进行比较,它们会产生不同的结果。

操作数 A

操作数 B

非变量比较结果

sql_variant 比较结果

'123' char

111 int

A > B

B > A

50000 int

5E1 float

A > B

B > A

因为不同数据类型系列的值在比较谓词中引用前必须显式转换,所以只有当对 sql_variant 列上的结果集进行排序时才能看出这些规则的效果。下表中的值是有关数据类型优先级规则的示例。

PriKey

VariantCol

1

50.0(基类型 float)

2

5000(基类型 int)

3

'124000'(基类型 char(6))

下表显示以下语句的结果:SELECT * FROM VariantTest ORDER BY VariantCol ASC。

PriKey

VariantCol

3

'124000'(基类型 char(6))

2

5000(基类型 int)

1

50.0(基类型 float)

下表中的值是使用不同的排序规则时排序规则优先级规则的示例。

IntKey

VariantCol

1

qrs (varchar SQL_Latin1_General_Pref_Cp1_CI_AS)

2

abc (varchar SQL_Latin1_General_Pref_Cp1_CI_AS)

3

qrs (varchar SQL_Latin1_General_CP1_CS_AS)

4

17.5 (decimal)

5

abc (varchar SQL_Latin1_General_CP1_CS_AS)

6

klm (varchar SQL_Latin1_General_CP1_CS_AS)

7

1.2 (decimal)

下表显示了 SELECT * FROM CollateTest ORDER BY VariantCol 语句的结果。下表显示的是组合在一起的确切数字数据类型系列的值和按各自的排序规则中组合的 varchar 值。

IntKey

VariantCol

5

abc (varchar SQL_Latin1_General_CP1_CS_AS)

6

klm (varchar SQL_Latin1_General_CP1_CS_AS)

3

qrs (varchar SQL_Latin1_General_CP1_CS_AS)

2

abc (varchar SQL_Latin1_General_Pref_Cp1_CI_AS)

1

qrs (varchar SQL_Latin1_General_Pref_Cp1_CI_AS)

7

1.2 (decimal)

4

17.5 (decimal)

mysql sql variant_使用 sql_variant 数据相关推荐

  1. mysql sql查询昨天的数据_sql语句,查询昨天的数据

    如果在程序中,有前台传来两个时间点:beginTime和endTime,在sql查询中的限制条件就是查询昨天的数据,那么可以这样写: 但是如果在这里要查询昨天的数据的话, 则不能简单地在开始时间的那里 ...

  2. mysql sql注入怎么获取数据_手把手教你通过SQL注入盗取数据库信息

    目录数据库结构 注入示例判断共有多少字段 判断字段的显示位置 显示登录用户和数据库名 获取所有数据库名 获取对应数据库的表 获取对应表的字段 获取所有的用户密码 我们都是善良的银!一生戎码只为行侠仗义 ...

  3. mysql sql 语句 查询重复数据 并删除重复数据 只保留一条

    **#例1:根据手机号customer_id查询所有重复的数据** SELECT* FROMaad_apply_main WHEREcustomer_id IN (SELECTcustomer_idF ...

  4. Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道

    Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道 Keyword::截取文本文件后部分 查看提示max_allowed_packet限制 Target Se ...

  5. mysql数据生产数据分析_基于MySQL玩转SQL数据分析课程 互联网数据分析师-SQL数据分析实战视频教程...

    基于MySQL玩转SQL数据分析课程 互联网数据分析师-SQL数据分析实战视频教程 课程目录 (1)SQL与数Ju分析;目录中文件数:23个 (1) 开课-课时3SQL与数Ju库的价值.flv (2) ...

  6. 使用sql语句往MySQL插入1000万条数据

    在学习或者工作生产环境中,我们经常要对数据库进行压力测试,往数据库中批量插入大量数据,这里我往Mysql中批量插入大量数据,采用存储过程的方法实现. 数据库版本:Mysql5.7 一.建表 1.创建数 ...

  7. kettle的连接与使用——从SQL sever中抽取数据至MYSQL

    示例:将SQL sever中test库的student表中的数据抽取至MySQL 如下:MYSQL中student表无数据,且需要获取数据的字段分别为sno.sname.sex.class(我们要将S ...

  8. mysql根据id删除数据sql语句_删除数据sql-sql数据库删除数据-sql中实现数据删除的语句是...

    怎样用sql语言删除一行数据 在SQL数据库中删除记录一般使用Delete语句,下面就将为您介绍SQL中用于删除记录的DELETE语句的语法 DELETE FROM 表名称 WHERE 列名称 = 值 ...

  9. 微软企业库mysql分页存储_使用微软企业库,非分页sql语句得到分页数据方法

    最近使用微软企业库,在做分页绑定的时候发现好象还没有多少通用的方法.为了灵活和换数据库,我不能使用存储过程.为了开发速度最快.我就是用datagrid绑定了. 以前长用的 DataAdapter.Fi ...

最新文章

  1. 【OpenStack】OpenStack系列1之Python虚拟环境搭建
  2. 沙发变身遥控器,涂鸦里藏PCB,MIT技术宅的智能家居竟然是这样
  3. 面向对象(特点)、局部变量与全局变量的区别、匿名对象、构造函数、
  4. Nature子刊:是穷是富与基因有关?大数据分析发现149个与收入相关基因位点
  5. Python中如何设置函数的默认值
  6. 环境部署(二):Linux下安装jenkins
  7. mysql文章列表_MySQL-分享文章列表 - Su的博客
  8. ffplay播放器原理学习
  9. 高质量实时渲染课程笔记(一)——介绍和概览(高质量实时渲染的含义、学习前置、涉及的内容目录、发展史)
  10. 用makedown写一份简约大方的简历
  11. Mac修改hosts文件 配置一些IP地址和域名的映射
  12. openmp crunching
  13. 如何通过里程碑控制项目进度
  14. MySQL 怎么插入10天前的日期_Mysql笔记
  15. 单片机中存储器扩展位地址线怎么算_单片机片外数据存储器扩展设计技巧简介...
  16. 阿里大数据工程师面经
  17. 罗技键盘连计算机,罗技键盘怎么连接电脑
  18. 软件工程课程周学习进度报告——第四周
  19. linux命令查找软件,linux指令速查器下载
  20. 2000个工作汇报PPT模板免费下载

热门文章

  1. 南京的java与苏州相比_苏州和南京各有什么优势?
  2. 视频怎么压缩大小?这几种方法试试看
  3. 学习Java需要学好英语吗?
  4. 常用的网页开发工具有哪些
  5. 异步多线程之ThreadPool详解
  6. 设计原则之迪米特法则
  7. (小规模)b牌棋盘完美覆盖数【整理】
  8. 大数据技术——MapReduce词频统计
  9. Mac 批量重命名(增加前缀后缀)
  10. python self.a_python 中关于self到底有什么用续