哪一种效率更高?

chengwenjian chengwenjian 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
现有一个代码翻译函数供查询语句使用,以下两种写法,哪种方案效率更高一些呢?

方案一:

crate function [dbo].[KSO_fn_CityTranslation]
(
@Citys varchar(60)
)
RETURNS varchar(200)
As
Begin
declare @Result varchar(200)

declare @S1 varchar(60)
declare @S2 varchar(60)
declare @Pos int

declare @Tmp varchar(40)
set @S1 = @Citys
set @Result = ''
while (@S1 <> '')
begin
set @Pos = charindex(',', @S1)
if @Pos > 0
begin
set @S2 = substring(@S1, 1, @Pos - 1)
set @S1 = substring(@S1, @Pos + 1, 200)
end
else
begin
set @S2 = @S1
set @S1 = ''
end
if @S2 <> ''
begin
set @Tmp = null
select @Tmp = IsNull(City, @S2) From KSO_tb_b_city Where Code = @S2 and DeleteFlag = 0
if @Tmp is not null
set @Result = @Result + @Tmp + ','
end
end
if @Result <> ''
begin
if substring(@Result, Len(@Result), 1) = ','
begin
set @Result = substring(@Result, 1, Len(@Result) - 1)
end
end

return @Result
End


方案二:

crate function [dbo].[KSO_fn_CityTranslation]
(
@Citys varchar(60)
)
RETURNS varchar(200)
As
Begin
declare @Result varchar(200)

Select @Result = IsNull(@Result + ',', '') + City
From KSO_tb_b_City Where charindex(Code + ',', @Citys + ',') > 0

return @Result
End


表结构如下:

CREATE TABLE [dbo].[KSO_tb_b_City](
[Code] [varchar](3) NOT NULL,
[City] [varchar](40) NULL,
[DeleteFlag] [bit] NULL,
[IsDefault] [bit] NULL,
[CreateTime] [datetime] NULL,
[CreateOperator] [varchar](20) NULL,
[LastUpdateTime] [datetime] NULL,
[LastUpdateOperator] [varchar](20) NULL,
[ByNo] [varchar](4) NULL,
[ShortName] [varchar](2) NULL,
CONSTRAINT [PK_EA_tb_b_City] PRIMARY KEY CLUSTERED
(
[Code] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF


示例数据:

INSERT INTO dbo.KSO_tb_b_City ( Code, City, DeleteFlag, IsDefault, CreateTime, CreateOperator, LastUpdateTime, LastUpdateOperator, ByNo, ShortName )
VALUES ( '010', '北京', 0, 1, NULL, NULL, NULL, NULL, NULL, '京' )
go
INSERT INTO dbo.KSO_tb_b_City ( Code, City, DeleteFlag, IsDefault, CreateTime, CreateOperator, LastUpdateTime, LastUpdateOperator, ByNo, ShortName )
VALUES ( '020', '广州', 0, 0, NULL, NULL, NULL, NULL, NULL, '穗' )
go
INSERT INTO dbo.KSO_tb_b_City ( Code, City, DeleteFlag, IsDefault, CreateTime, CreateOperator, LastUpdateTime, LastUpdateOperator, ByNo, ShortName )
VALUES ( '021', '上海', 0, 0, NULL, NULL, NULL, NULL, '', '沪' )
go
INSERT INTO dbo.KSO_tb_b_City ( Code, City, DeleteFlag, IsDefault, CreateTime, CreateOperator, LastUpdateTime, LastUpdateOperator, ByNo, ShortName )
VALUES ( '022', '天津', 0, 0, '12/23/2005 12:38:24.140 PM', 'F010033', '12/23/2005 12:38:24.140 PM', 'F010033', '', '' )
go
INSERT INTO dbo.KSO_tb_b_City ( Code, City, DeleteFlag, IsDefault, CreateTime, CreateOperator, LastUpdateTime, LastUpdateOperator, ByNo, ShortName )
VALUES ( '023', '重庆', 0, 0, '12/23/2005 12:40:35.827 PM', 'F010033', '12/23/2005 12:40:35.827 PM', 'F010033', '', '' )
go
INSERT INTO dbo.KSO_tb_b_City ( Code, City, DeleteFlag, IsDefault, CreateTime, CreateOperator, LastUpdateTime, LastUpdateOperator, ByNo, ShortName )
VALUES ( '024', '沈阳', 0, 0, '12/23/2005 12:29:21.500 PM', 'F010033', '12/23/2005 12:29:21.500 PM', 'F010033', '', '' )
go
...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
chengwenjian
疑难问题 22,298 成员 121,727 内容