다음 SQL이 C# 코드에 포함되어 있습니다.다른 조건이 제대로 작동하지 않는 경우 SQL
검색 쿼리이며 검색은 도시와 주소를 기반으로합니다.
아래와 같은 쿼리
string sql = "declare @v int;set @v=-1;declare @st varchar(1000);";
sql += "set @st='select PLACEID,LEFT(CONVERT(NVARCHAR(1000),description),500)+''...'' as des1,LOCATIONCITY,ADDRESS,DateT,RENT from infoone where '";
int x = 0;
string ft = "";
string sql1 = "";
sql += "; Select @v= count(address) from infoone where(";
foreach (string s in str)
{
if (x == 0)
{
ft += " " + s;
sql += "(address like '%" + ft.Remove(0, 1) + "%')";
sql1 += "(address like ''%" + ft.Remove(0, 1) + "%'')";
}
else
{
ft += " " + s;
sql += " OR (address like '%" + ft.Remove(0, 1) + "%')";//ft.Remove(0, 1)
sql1 += " OR (address like ''%" + ft.Remove(0, 1) + "%'')";//ft.Remove(0, 1)
}
x++;
}
sql += "); if @v > 0 begin set @[email protected]+'" + sql1 + "'+ 'and ('; end else begin set @[email protected]+'" + sql1 + "'+ 'or ('; end ";
sql1 = "";
x = 0;
sql += "; Select @v= count(locationcity) from infoone where(";
foreach (string s in str)
{
if (x == 0)
{
sql += "(locationcity like '%" + s + "%') ";
sql1 += "(locationcity like ''%" + s + "%'') ";
}
else
{
sql += " OR (locationcity like '%" + s + "%') ";
sql1 += " OR (locationcity like ''%" + s + "%'') ";
}
x++;
}
sql += "); if @v>0 begin set @[email protected]+'" + sql1 + ")'+' and ('; end else begin set @[email protected]+'" + sql1 + ")'+ 'or ('; end ";
x = 0;
sql1 = "";
ft = "";
//sql += " and (";
sql += "Select @v= count(address) from infoone where(";
foreach (string s in str)
{
if (x == 0)
{
ft += " " + s;
sql += "(address like '%" + ft.Remove(0, 1) + "%')";
sql1 += "(address like ''%" + ft.Remove(0, 1) + "%'')";
}
else
{
ft += " " + s;
sql += " OR (address like '%" + ft.Remove(0, 1) + "%')";//ft.Remove(0, 1)
sql1 += " OR (address like ''%" + ft.Remove(0, 1) + "%'')";//ft.Remove(0, 1)
}
x++;
}
sql += "); if @v>0 begin set @[email protected]+'" + sql1 + ")'; end else begin set @[email protected]+'" + sql1 + ")'; end execute(@st);";
문제는 다음 행
sql += "); if @v > 0 begin set @[email protected]+'" + sql1 + "'+ 'and ('; end else begin set @[email protected]+'" + sql1 + "'+ 'or ('; end ";
는 SQL 변수 @v가 다음과 같이 할당하여 상기 광고에
select @v=count(address) from infoone where address like '%edmonton%'
인 , @v는 '0'을 얻고 별도로 검사했습니다. 하지만 여전히 코드는 다음의 조건이 실행 따르고
sql += "); if @v>0 begin set @[email protected]+'" + sql1 + ")'+' and ('; end else begin set @[email protected]+'" + sql1 + ")'+ 'or ('; end ";
x = 0;
결국 생성하는 쿼리 (하지가해야 할 다른 조건을 실행), 그러나 다시 쿼리 SQL을 실행하여 실행하면 (...) . 그리고 주요 SQL 로그인이
declare @v int;set @v=-1;declare @st varchar(1000);
set @st='select PLACEID,LEFT(CONVERT(NVARCHAR(1000),description),500)+''.'' as des1,LOCATIONCITY,ADDRESS,DateT,RENT from infoone where ';
Select @v= count(address) from infoone where((address like '%main%')
OR
(address like '%main street%')
OR (address like '%main street edmonton%'));
if @v > 0 begin set @[email protected]+'(address like ''%main%'')
OR (address like ''%main street%'') OR (address like ''%main street edmonton%'')'+
'and ('; end else begin set @[email protected]+'(address like ''%main%'') OR (address like ''%main street%'')
OR (address like ''%main street edmonton%'')'+ 'or ('; end ;
Select @v= count(locationcity) from infoone where((locationcity like '%main%')
OR (locationcity like '%street%') OR (locationcity like '%edmonton%'));
if @v>0 begin set @[email protected]+'(locationcity like ''%main%'') OR (locationcity like ''%street%'')
OR (locationcity like ''%edmonton%''))'+' and ('; end else begin set @[email protected]+'(locationcity like ''%main%'')
OR (locationcity like ''%street%'') OR (locationcity like ''%edmonton%''))'+
'or ('; end Select @v= count(address) from infoone where((address like '%main%')
OR (address like '%main street%') OR (address like '%main street edmonton%'));
if @v>0 begin set @[email protected]+'(address like ''%main%'') OR (address like ''%main street%'')
OR (address like ''%main street edmonton%''))'; end else begin set @[email protected]+'(address like ''%main%'')
OR (address like ''%main street%'') OR (address like ''%main street edmonton%''))'; end execute(@st);
내가 뭘 잘못 알아 내기 위해 제발 도와주세요, 쿼리에
감사
마지막에 무엇이 반환되는지 확인 했습니까? 나는 쿼리를 의미합니다. – mrsrizan
그렇습니다. 그렇다면 어떻게하면 @v가 0과 같아야한다고 할지라도 "if @v> 0"조건이 참이라고 말할 수 있습니다. – fc123
SQL 문만을 붙여 넣을 수 있습니까? 그 문법 오류가 있는지 짐작하기가 어렵습니다. .. – Rafay