【问题标题】:T-SQL: Get max numeric value in char field having both numbers and lettersT-SQL:在具有数字和字母的字符字段中获取最大数值
【发布时间】:2015-07-28 14:11:41
【问题描述】:

在 SQL Server 2008 数据库表中,我有一个包含数字和字母的 char 字段。即:

TST
842
UUT
124
674
XTM
763

我需要在该字段中找到最大的整数。所以在上面的例子中我会返回“842”。

我知道如何测试该值是否为数字 (ISNUMERIC()function),但我不知道如何使用该测试返回最大整数值。

【问题讨论】:

  • 首先不要使用ISNUMERIC——使用TRY_CONVERTTRY_PARSE函数——blogs.msdn.com/b/manub22/archive/2013/12/24/…
  • 谢谢,gotqn,但正如您从下面的多个答案中看到的那样,ISNUMERIC() 工作得很好。 (至少在我的特殊情况下。总有例外!)
  • @gotqn:由于 OP 要求使用 SQL Server 2008。SQL Server 2008 中是否提供 TRY_CONVERTTRY_PARSE
  • 是否有可能拥有.?如果是这样,isnumeric 可能不会给你正确的答案,如果你真的需要整数而不仅仅是最高数字,TRY_Convert 可能会截断.
  • @Arulkumar 不,try_convert 是在 2012 年推出的 afaik。

标签: sql-server tsql max numeric isnumeric


【解决方案1】:
SELECT MAX(yourcol) FROM T WHERE ISNUMERIC(yourcol)=1 ;

【讨论】:

    【解决方案2】:

    请试试这个:

    SELECT MAX(field) 
    FROM   table 
    WHERE ISNUMERIC(field) = 1
    

    【讨论】:

      【解决方案3】:

      一种方法是使用外部查询从整数集中获取最大值:

      select MAX(your_char) from (select your_char from table where ISNUMERIC(your_char) = 1) sub
      

      或者实际上这也应该起作用:

      select MAX(your_char) from t where ISNUMERIC(your_char) = 1
      

      【讨论】:

        猜你喜欢
        • 2021-06-20
        • 1970-01-01
        • 1970-01-01
        • 2014-10-12
        • 2021-03-15
        • 2022-08-18
        • 1970-01-01
        • 1970-01-01
        • 2010-09-08
        相关资源
        最近更新 更多