【发布时间】:2018-10-09 10:55:53
【问题描述】:
经过我的所有优化后,我发现该 select 语句的存储需要大量时间,因为它包含 select 和 where 条件中的函数。请帮我重写select语句。
if OBJECT_ID('QATR_TestCase0003_ElementElIDContainsUpperCase')
is not null drop table QATR_TestCase0003_ElementElIDContainsUpperCase
select elid, tsmkey, dbo.[ContainCapLetter](elid) ContaintCap ,
cast('Element elid '+elid+' contains UPPER CASE in GenProductsAll ' as
nvarchar(255)) datastatus
into QATR_TestCase0003_ElementElIDContainsUpperCase from TblGenProductsAll
where dbo.[ContainCapLetter](elid) <>0
下面是我写的函数:
CREATE FUNCTION [dbo].[ContainCapLetter] (@str1 as nvarchar(255))
RETURNS int
BEGIN
declare @j int, @i int
set @i=0
select @j = len(@str1)
while @j >0
begin
If unicode(left(@str1,1)) not between 64 and 91
begin
set @str1 = right(@str1,len(@str1)-1)
select @j= len(@str1)
end
Else If unicode(left(@str1,1)) between 64 and 91
begin
set @i= 1
set @j= 0
end
end
return @i
END
【问题讨论】:
标签: sql-server performance function optimization conditional-statements