내 응용 프로그램에서 나는 검색을 구현하고 있는데, 사용자가 텍스트 상자에 쉼표로 구분 된 텍스트를 입력하면 검색 결과가 표시되는 것과 같다. 이것은 나의 요구 사항이며,이를 위해 나는이처럼 이것에 대한 절차를 ....... 쓰기절차 (문제 발생)?
create procedure [dbo].[videos_getSearch](@searchstring AS VARCHAR(1000))
AS
BEGIN
DECLARE @CurNumber INT, @CommaIndex INT, @strSearch varchar(3000),@str varchar(50)
declare @strQuery varchar(1000),@result varchar(5000)
declare @sql varchar(2000)
DECLARE @CurNumStr VARCHAR(20)
set @strSearch = ''
WHILE LEN(@searchstring) > 0
BEGIN
SET @CommaIndex = CHARINDEX(',', @searchstring)
IF @CommaIndex = 0 SET @CommaIndex = LEN(@searchstring)+1
SET @CurNumStr = SUBSTRING(@searchstring, 1, @CommaIndex-1)
SET @searchstring = SUBSTRING(@searchstring, @CommaIndex+1, LEN(@searchstring))
BEGIN
set @str = ltrim(rtrim(@CurNumStr))
if LEN(@searchstring)> 0
begin
set @strSearch = @strSearch + '''%' + @str +'%'''+'or tags like'
end
else
begin
set @strSearch = @strSearch + '''%'+ @str +'%'''
end
END
END
set @sql='SELECT phot_album.albumid,phot_album.tags,phot_album.albumtitle,phot_album.coverphoto,trailor_creation.trailorid,trailor_creation.tags,trailor_creation.movie,trailor_creation.images,video_upload.videoid,video_upload.videotitle,video_upload.videofile,video_upload.tags FROM phot_album INNER JOIN trailor_creation ON phot_album.tags = trailor_creation.tags INNER JOIN video_upload ON phot_album.tags = video_upload.tags where (phot_album.tags) like '[email protected] +' or (trailor_creation.tags) like '[email protected] +' or (video_upload.tags) like '[email protected]
execute (@sql)
END
나는 내가 생각이 절차에 ambigious '태그'와 같은 오류를주고있다이 절차를 실행할 때 3 개의 테이블을 합칩니다. 도와주세요
모호한 열 이름 'tags'. 메시지 209, 수준 16, 상태 1, 줄 1 모호한 열 이름 'tags'. 메시지 209, 수준 16, 상태 1, 줄 1 모호한 열 이름 'tags'. 당신이 줄 수있는 or tags like
이 기능은 SQL 공격에주의해야합니다. – DanDan
내 대답에 동의 한 것으로 표시되어 있습니다. 단지 당신이 그 사실을 알지 못했을 때를 대비하여 현상금이 자동으로 더 이상 수여되지 않는다는 것을 당신에게 알려주는 것입니다! –