加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – SQL SERVER – 了解MIN(文本)的工作原理

发布时间:2020-12-12 16:46:21 所属栏目:MsSql教程 来源:网络整理
导读:我正在做一点挖掘,并寻找关于SQL Server如何评估MIN(Varchar)的解释. 我在BOL中发现这个说法:MIN找到底层数据库中定义的整理顺序中的最低值 所以如果我有一个表具有以下值的一行: DataAAABAC 执行SELECT MIN(DATA)将返回AA.我只是想了解为什么背后,了解BOL
我正在做一点挖掘,并寻找关于SQL Server如何评估MIN(Varchar)的解释.

我在BOL中发现这个说法:MIN找到底层数据库中定义的整理顺序中的最低值

所以如果我有一个表具有以下值的一行:

Data

AA
AB
AC

执行SELECT MIN(DATA)将返回AA.我只是想了解为什么背后,了解BOL一点点更好.

谢谢!

解决方法

它由 collation(排序顺序)决定.对于大多数文化,整理顺序与英文字母表中的字母顺序相同,所以:

>’AA’ ‘AB’
>’AA’ ‘AC’
>’AB’< 'AC'
因此,“AA”是最小值.对于其他文化,这可能不成立.例如,丹麦排序规则将“AB”作为最小值,因为“AA”> ‘AB’.这是因为“AA”被视为等同于“?”,这是丹麦字母表中的最后一个字母.

SELECT MIN(s COLLATE Danish_Norwegian_CI_AS) FROM table1;

min_s
AB

要获得“普通”排序顺序,请使用Latin1_General_Bin排序规则:

SELECT MIN(s COLLATE Latin1_General_Bin) FROM table1;

min_s
AA

要重现此结果,您可以创建此测试表:

CREATE TABLE table1 (s varchar(100));
INSERT INTO table1 (s) VALUES ('AA'),('AB'),('AC');

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读