我有一个零售商代码,它是这样的varchar and Int =>RT003880组合
我每天都会创建一个按脚本编写的零售商代码。所以我需要我插入的最后一个零售商代码。
因此,我拆分了Integer and varchar,以求最大值。
这是通过使用查询获得的最大值。
select SUBSTRING(Retailer_code,5,9) as RetailerCode
Into #maxfindtable
from dbo.sample
select MAX(RetailerCode) from #maxfindtable我需要输入函数或存储过程,如何做到这一点?
发布于 2015-08-19 11:40:53
尝试:
select max(SUBSTRING(RetailerCode,3,len(RetailerCode)-2))对于RT003880,整数部分从
3位置开始,len(RetailerCode)-2定义substring的长度。从3rd位置开始的所有字符
有关更多的清洁信息,请参见超负荷。
编辑2:
尝试使用Cast
create table #tab (genId varchar(max))
insert into #tab(genId)
values('RT00031'),('RT00013232'),('RT00034'),('RT00084')
select * from #tab
select max(cast(SUBSTRING(genId,3,len(genId)-2) as int)) from #tab发布于 2015-08-19 14:57:29
我将RetailerCode分成两列(一个CHAR/VARCHAR和一个INT/SMALLINT/NUMERIC),以便能够从表中获得一些性能。如果请求,可以使用计算列将它们连接起来。但是,如果计算出的列没有持久化,我永远不会查询它。
发布于 2015-08-20 18:39:22
今天我已经插入了10000条新的记录,它选择了错误的最大值。这两个代码都编写了相同的值,最大值为RT0017898,但它显示了RT0009999。在我检查了一个示例数据之后-- RetailerId RetailerCode RetailerName 1 RT00031 mBigBazar 2 RT00034 TBazar 3 RT00084 SaravanaStore It shows Correct Value - 00084 When I have insert a new Record it shows wrongly RetailerId RetailerCode RetailerName 1 RT00031 mBigBazar 2 RT00034 TBazar 3 RT00084 SaravanaStore 4 RT00013232 NewStore,现在它显示了00084 .why --它显示错了吗?
https://stackoverflow.com/questions/32094307
复制相似问题