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