怎么查出最大的文件号的数字部分
如何查出最大的文件号的数字部分?
表名 documentfile
字段名 filenumber 该字段中有如下数据,如何用sql语句查出以下数据中的最大数字“2018”呢?
工会第3号文件
工会第2018号文件
工会第544号文件
工会第29号文件
工会第172号文件
工会第63号文件
------解决方案--------------------
------解决方案--------------------
表名 documentfile
字段名 filenumber 该字段中有如下数据,如何用sql语句查出以下数据中的最大数字“2018”呢?
工会第3号文件
工会第2018号文件
工会第544号文件
工会第29号文件
工会第172号文件
工会第63号文件
------解决方案--------------------
----------------------------
-- Author :TravyLee(物是人非事事休,欲语泪先流!)
-- Date :2012-12-03 16:30:03
-- Version:
-- Microsoft SQL Server 2012 - 11.0.2100.60 (Intel X86)
-- Feb 10 2012 19:13:17
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition: Core-based Licensing on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------
--> 测试数据:[test]
if object_id('[test]') is not null
drop table [test]
go
create table [test]([col] varchar(16))
insert [test]
select '工会第3号文件' union all
select '工会第2018号文件' union all
select '工会第544号文件' union all
select '工会第29号文件' union all
select '工会第172号文件' union all
select '工会第63号文件'
go
;with t
as(
select substring(col+' ',patindex( '%[0-9]% ',col+' '),len(col+' ')) as col1
from test
)
select max(cast(left(col1+' ',patindex( '%[^0-9]% ',col1+' ')-1) as int)) as col from t
/*
col
-----------
2018
(1 行受影响)
*/
------解决方案--------------------
--CREATE TABLE [test] ( [col] VARCHAR(16) )
--INSERT [test]
-- SELECT '工会第3号文件'
-- UNION ALL
-- SELECT '工会第2018号文件'
-- UNION ALL
-- SELECT '工会第544号文件'
-- UNION ALL
-- SELECT '工会第29号文件'
-- UNION ALL
-- SELECT '工会第172号文件'
-- UNION ALL
-- SELECT '工会第63号文件'
SELECT MAX(CONVERT(INT, SUBSTRING([col], 4,
PATINDEX('%[^0-9]%',
SUBSTRING([col], 4, LEN(col))) - 1)))
FROM [test]
/*
-----------
2018
(1 行受影响)
*/