有一组如以下字段的值,杂乱无章,如何使用SQL提取它的数值部份的最大值呢?
17002
17003
999-PCBA
A010-B000
a1124
aqed03
B010-0237001
F010-027PE1021
F010-3300209
F010-80102251
F010-998000-000
办法如下:
1、创建一函数,过虑字段中的数值部份
create function dbo.GetNoFromStr(@str nvarchar(100))
returns bigint
as
begin
while patindex('%[^0-9]%',@str)>0
begin
set @str=stuff(@str,patindex('%[^0-9]%',@str),1,'')
end
return convert(bigint,@str)
end
2、直接查询使用Max 函数
select max(dbo.GetNoFromStr(cInvCode)) as invcode from Inventory
3、查询会选出字段的最大值了。
10999000001