如何为like Search 编写Dynamic SqL Query?
How to write Dynamic SqL Query for like Search?
我在为类似搜索编写 SQL 动态查询时遇到一些问题。
我想为我的 problem.Please 寻求一些帮助,向我展示我的项目路线图。
我得到了 ACode BCode CCode 的结果,但 DCode 没有得到结果。
ACode Bcode CCode 可以得到正确的结果。
DCode 无法得到结果。我想用 LIKE SEARCH <<'% DCode %'>> 分配 DCode。
请帮忙。
谢谢你对我的问题感兴趣:)
Create PROCEDURE [dbo].[BDSPag]
(
@Acode nvarchar(100)=null,
@BCode nvarchar(100)=null,
@CCode nvarchar(100)=null,
@DCode nvarchar(200)=null
)
AS
BEGIN
Declare @SQL nvarchar(max)
Declare @SqlParams nvarchar(max)
Set @SQL = 'Select ACode, BCode, CCode, DCode FROM tblCollection where 1=1'
if(@Acode is not null) -- gp Code
set @SQL= @SQL+' and CategoriesCode= @CC'
if(@BCode is not null)--B Code
set @SQL= @SQL+' and GItem= @GI'
if(@CCode is not null) --C Code
set @SQL= @SQL+' and CtdCode= @CtdC'
declare @Paran nvarchar(150)
set @Paran=' and DCode LIKE '''+ '%' + '@GN' + '%' + ''''
set @SQL= @SQL+ @Paran
Execute sp_executesql @SQL,
N'@CC nvarchar(100), @GI nvarchar(100), @CtdC nvarchar(100), @RecU nvarchar(100),@GIU nvarchar(100), @GN nvarchar(100) ',
@CC=@ACode, @GI=@BCode, @CtdC=@CCode ,@GN=@DCode
End
您无需将 Like 参数与其他参数区别对待。只需在参数值中添加“%”通配符即可。
Create PROCEDURE [dbo].[BDSPag]
(
@Acode nvarchar(100)=null,
@BCode nvarchar(100)=null,
@CCode nvarchar(100)=null,
@DCode nvarchar(200)=null
)
AS
BEGIN
set @DCode = '%' + @DCode + '%'
Declare @SQL nvarchar(max)
Declare @SqlParams nvarchar(max)
set @SqlParams = N'@CC nvarchar(100), @GI nvarchar(100), @CtdC nvarchar(100), @RecU nvarchar(100),@GIU nvarchar(100), @GN nvarchar(100) '
Set @SQL = 'Select ACode, BCode, CCode, DCode FROM tblCollection where 1=1'
if(@Acode is not null) -- gp Code
set @SQL= @SQL+' and CategoriesCode= @CC'
if(@BCode is not null)--B Code
set @SQL= @SQL+' and GItem= @GI'
if(@CCode is not null) --C Code
set @SQL= @SQL+' and CtdCode= @CtdC'
if(@Dcode is not null) --D Code
set @SQL= @SQL+' and DCode like @GN'
print @SQL -- Show the SQL statement to execute
Execute sp_executesql @SQL,
@SqlParams,
@CC=@ACode, @GI=@BCode, @CtdC=@CCode, @GN=@DCode
End
我在为类似搜索编写 SQL 动态查询时遇到一些问题。 我想为我的 problem.Please 寻求一些帮助,向我展示我的项目路线图。 我得到了 ACode BCode CCode 的结果,但 DCode 没有得到结果。 ACode Bcode CCode 可以得到正确的结果。 DCode 无法得到结果。我想用 LIKE SEARCH <<'% DCode %'>> 分配 DCode。 请帮忙。 谢谢你对我的问题感兴趣:)
Create PROCEDURE [dbo].[BDSPag]
(
@Acode nvarchar(100)=null,
@BCode nvarchar(100)=null,
@CCode nvarchar(100)=null,
@DCode nvarchar(200)=null
)
AS
BEGIN
Declare @SQL nvarchar(max)
Declare @SqlParams nvarchar(max)
Set @SQL = 'Select ACode, BCode, CCode, DCode FROM tblCollection where 1=1'
if(@Acode is not null) -- gp Code
set @SQL= @SQL+' and CategoriesCode= @CC'
if(@BCode is not null)--B Code
set @SQL= @SQL+' and GItem= @GI'
if(@CCode is not null) --C Code
set @SQL= @SQL+' and CtdCode= @CtdC'
declare @Paran nvarchar(150)
set @Paran=' and DCode LIKE '''+ '%' + '@GN' + '%' + ''''
set @SQL= @SQL+ @Paran
Execute sp_executesql @SQL,
N'@CC nvarchar(100), @GI nvarchar(100), @CtdC nvarchar(100), @RecU nvarchar(100),@GIU nvarchar(100), @GN nvarchar(100) ',
@CC=@ACode, @GI=@BCode, @CtdC=@CCode ,@GN=@DCode
End
您无需将 Like 参数与其他参数区别对待。只需在参数值中添加“%”通配符即可。
Create PROCEDURE [dbo].[BDSPag]
(
@Acode nvarchar(100)=null,
@BCode nvarchar(100)=null,
@CCode nvarchar(100)=null,
@DCode nvarchar(200)=null
)
AS
BEGIN
set @DCode = '%' + @DCode + '%'
Declare @SQL nvarchar(max)
Declare @SqlParams nvarchar(max)
set @SqlParams = N'@CC nvarchar(100), @GI nvarchar(100), @CtdC nvarchar(100), @RecU nvarchar(100),@GIU nvarchar(100), @GN nvarchar(100) '
Set @SQL = 'Select ACode, BCode, CCode, DCode FROM tblCollection where 1=1'
if(@Acode is not null) -- gp Code
set @SQL= @SQL+' and CategoriesCode= @CC'
if(@BCode is not null)--B Code
set @SQL= @SQL+' and GItem= @GI'
if(@CCode is not null) --C Code
set @SQL= @SQL+' and CtdCode= @CtdC'
if(@Dcode is not null) --D Code
set @SQL= @SQL+' and DCode like @GN'
print @SQL -- Show the SQL statement to execute
Execute sp_executesql @SQL,
@SqlParams,
@CC=@ACode, @GI=@BCode, @CtdC=@CCode, @GN=@DCode
End