T-SQL:在具有数字和字母的字符字段中获取最大数值

Posted

技术标签:

【中文标题】T-SQL:在具有数字和字母的字符字段中获取最大数值【英文标题】:T-SQL: Get max numeric value in char field having both numbers and letters 【发布时间】: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。 【参考方案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

【讨论】:

以上是关于T-SQL:在具有数字和字母的字符字段中获取最大数值的主要内容,如果未能解决你的问题,请参考以下文章

从数字数组中查找可能的字母字符串数

字段text类型以大括号开头 Java里获取不到

从 T-SQL 中的周数获取日期

hdu 6034

T-SQL语句

如何使用 T-SQL 在数据库中的所有文本字段中搜索某些子字符串