Sql server 在SQL Server中从选择查询合并多个结果
我有这个SQL块代码Sql server 在SQL Server中从选择查询合并多个结果,sql-server,Sql Server,我有这个SQL块代码 use TestDatabase declare @keyword nvarchar(1000) = ''; declare @sqlKeyword nvarchar(1000) = ''; set @sqlKeyword = 'select * into #tmphosovanban from TblHoSoVB select * from( select * from (
use TestDatabase
declare @keyword nvarchar(1000) = '';
declare @sqlKeyword nvarchar(1000) = '';
set @sqlKeyword =
'select * into #tmphosovanban from TblHoSoVB
select * from(
select * from (
--tim tu khoa theo district
( select * from #tmphosovanban
where DCHCHuyenID in (select DistrictID from MstDistrict where DistrictName like N''%'+@keyword+'%'' )
or DatHCHuyenID in (select DistrictID from MstDistrict where DistrictName like N''%'+@keyword+'%'' )
)
union
--tim tu khoa theo town
(select * from #tmphosovanban
where DCHCXaID in (select TownID from MstTown where TownName like N''%'+@keyword+'%'')
or DatHCXaID in (select TownID from MstTown where TownName like N''%'+@keyword+'%'')
)
union
--tim tu khoa theo nguon goc dat
(select * from #tmphosovanban
where NGSuDungDatID in (select MasterID from MstCommonMaster where MasterName like N''%'+@keyword+'%'')
or MDSuDungDatID in (select MasterID from MstCommonMaster where MasterName like N''%'+@keyword+'%'')
or LoaiTaiSanID in (select MasterID from MstCommonMaster where MasterName like N''%'+@keyword+'%'')
)
union
(select * from #tmphosovanban
where ViTriLuuID in (select GiaID from MstViTriGia where TenGia like N''%'+@keyword+'%'')
)
) as temp
) as temp2
drop table #tmphosovanban'
exec(@sqlKeyword)
我犯了一个错误
味精102,第15级,状态1,第21行“')附近的语法不正确 当我在SQL Server上运行此块时。我不知道为什么是错的。当我删除下面的一个块时,它会运行,所以我认为我的语法是正确的,因为另一个原因,它不会运行。我怎样才能解决这个问题
--tim tu khoa theo district
( select * from #tmphosovanban
where DCHCHuyenID in (select DistrictID from MstDistrict where DistrictName like N''%'+@keyword+'%'' )
or DatHCHuyenID in (select DistrictID from MstDistrict where DistrictName like N''%'+@keyword+'%'' )
)
union
--tim tu khoa theo town
(select * from #tmphosovanban
where DCHCXaID in (select TownID from MstTown where TownName like N''%'+@keyword+'%'')
or DatHCXaID in (select TownID from MstTown where TownName like N''%'+@keyword+'%'')
)
union
--tim tu khoa theo nguon goc dat
(select * from #tmphosovanban
where NGSuDungDatID in (select MasterID from MstCommonMaster where MasterName like N''%'+@keyword+'%'')
or MDSuDungDatID in (select MasterID from MstCommonMaster where MasterName like N''%'+@keyword+'%'')
or LoaiTaiSanID in (select MasterID from MstCommonMaster where MasterName like N''%'+@keyword+'%'')
)
union
您的问题是,您定义了一个变量,该变量包含
1000
个字符,并在notepad++中计算字符串查询。我注意到字符串包含1770+
个字符,因此SQL Server正在截断您的字符串,因此尝试执行不完整的查询
将变量更改为
@sqlKeyword-nvarchar(2000)
,您应该会没事。您的变量@sqlKeyword-nvarchar(1000)
小于查询中的字符量,因此将其增加到,比如说,2000。让我知道,如果它解决了你的问题,我会补充作为一个答案。谢谢。它解决了我的问题