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_CONVERT
或TRY_PARSE
函数——blogs.msdn.com/b/manub22/archive/2013/12/24/…
谢谢,gotqn,但正如您从下面的多个答案中看到的那样,ISNUMERIC()
工作得很好。 (至少在我的特殊情况下。总有例外!)
@gotqn:由于 OP 要求使用 SQL Server 2008。SQL Server 2008 中是否提供 TRY_CONVERT
或 TRY_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:在具有数字和字母的字符字段中获取最大数值的主要内容,如果未能解决你的问题,请参考以下文章