Sql server SQL Server如何处理varchar列的最大值?
如果我做了类似的事情Sql server SQL Server如何处理varchar列的最大值?,sql-server,Sql Server,如果我做了类似的事情 select max(case when col1 = 5 then 'banana' else '0') SQL Server将如何选择?列的最大值是多少?我认为,在SQL Server中执行MAX(string)时,它会按字母升序排列值,并选择最后一个值(列表底部) 你能把剩下的问题贴出来吗?或者更详细地解释一下您试图实现的目标?我相信,当您在SQL Server中执行MAX(string)时,它会按字母升序排列值,并选择最后一个值(列表底部) 你能把剩下的问题贴出来
select max(case when col1 = 5 then 'banana' else '0')
SQL Server将如何选择?列的最大值是多少?我认为,在SQL Server中执行
MAX(string)
时,它会按字母升序排列值,并选择最后一个值(列表底部)
你能把剩下的问题贴出来吗?或者更详细地解释一下您试图实现的目标?我相信,当您在SQL Server中执行
MAX(string)
时,它会按字母升序排列值,并选择最后一个值(列表底部)
你能把剩下的问题贴出来吗?或者更详细地解释一下您试图实现的目标?这相当于获取如下数据:
col5
1
3
5
7
然后把它转换成这个
col5 | case when...
1 | 0
3 | 0
5 | banana
7 | 0
然后对上述结果进行max。结果分为四种情况:
NULL
col1=5
为真的行,那么您将得到banana
col1=5
为false的行,那么您将得到0
col1=5
都是true和false,那么您将得到banana
,因为根据词典比较banana>0
我通常只在尝试在不使用PIVOT语句的情况下执行PIVOT的等效操作时看到这种类型的查询。这相当于获取如下所示的数据:
col5
1
3
5
7
然后把它转换成这个
col5 | case when...
1 | 0
3 | 0
5 | banana
7 | 0
然后对上述结果进行max。结果分为四种情况:
NULL
col1=5
为真的行,那么您将得到banana
col1=5
为false的行,那么您将得到0
col1=5
都是true和false,那么您将得到banana
,因为根据词典比较banana>0
我通常只在尝试在不使用PIVOT语句的情况下执行PIVOT的等效操作时才看到这种类型的查询。那么,您尝试过吗?执行脚本是了解其功能的最快方法。是,并且选择文本值而不是“0”文本。我想知道,当列为文本时,它是如何选择MAX的排序顺序的……在这个查询中是否有Group By?在原文中,是的,但我的代码片段充分说明了我想知道的内容,即MAX如何处理文本值。现在我明白了,你试过了吗?执行脚本是了解其功能的最快方法。是,并且选择文本值而不是“0”文本。我想知道,当列为文本时,它是如何选择MAX的排序顺序的……在这个查询中是否有Group By?在原文中,是的,但我的代码片段充分说明了我想知道的内容,即MAX如何处理文本值。现在我了解了。这是大部分查询,除了“banana”将替换为varchar列。我没有写它,这个人基本上是在尝试实现coalesce所做的事情,它起了作用,所以我想知道它为什么起作用。我在网上找不到任何使用max和文本列的地址。谢谢。很公平,使用MAX()查询似乎是一种奇怪的方式,因此我想了解更多信息。这是查询的大部分内容,除了“banana”将替换为varchar列。我没有写它,这个人基本上是在尝试实现coalesce所做的事情,它起了作用,所以我想知道它为什么起作用。我在网上找不到任何使用max和文本列的地址。谢谢。公平地说,使用MAX()查询似乎是一种奇怪的方式,因此我想了解更多信息。谢谢,所以它会对文本进行词典比较。现在我明白了。+1解释得很好。。只是为了详细说明:因为数字在字母之前,所以它的“值”更小。。这就是为什么
0
谢谢你,所以它会对文本进行词典比较。现在我明白了。+1解释得很好。。只是为了详细说明:因为数字在字母之前,所以它的“值”更小。。这就是为什么0