2010-03-22 5 views
2

일반적으로 나는 WHERE [email protected]으로 내 where 문을 작성한 다음 param을 추가합니다. 이제 사용자에게 '귀리'와 같은 몇 가지 문자를 지정하고 '코팅'과 일치하는 %oat% 와일드 카드를 사용하고 싶습니다. 그래서 와일드 카드가 사용자 입력 ('seachword') 주위에 있도록 쿼리를 작성하려면 어떻게해야합니까?어떻게 사용자 입력 및 와일드 카드를 사용하여 SQL 쿼리를 작성합니까

이제 한 걸음 더 나아가십시오. 나는 사용자가 %를 쓰는 것을 좋아하지 않으므로 그는 % bl을 할 수 없다. 아마도 %는 문장의 일부입니다 (또는 불법적 일 수 있지만 문장의 일부가되는 것이 좋습니다). 단어 또는 문장 주위에 와일드 카드를 넣고 사용자가 단어 사이에 와일드 카드를 넣지 못하게하려면 어떻게해야합니까?

C#의 ado.net의 SQL/SQLite는

답변

1

RE : 어떻게 단어 나 문장 주위에 내 와일드 카드를 넣어 자신의 단어 사이에 와일드 카드를 넣어에서 사용자를 허용합니까? 난 당신이 \% 어떤 % 사용자 공급 장치를 장착하고 prepared statements를 사용하는 경우

LIKE @Expression ESCAPE '\' 
1

PARAM 계속 사용 (바람직 문장 % 부분을), 그러나 이전에 결합 PARAM에서 와일드 카드를 추가한다.

C 번호 :

param = '%' + Regex.Replace(param, @"[%?]", String.Empty) + '%' 

SQL :

select * from ... where key like :param 
3

를 사용해야 할 것이라고 생각

을 (바람직하게는 문장의 % 부분을) (즉 SQLiteCommand, DbCommand의 서브 클래스) , 이것은 당신을 위해 돌봐 줄 것입니다. 예 :

using (SqlCommand myCommand = new SQLiteCommand("SELECT * FROM TABLE WHERE (COLUMN LIKE = '%' + @input + '%')")) 
{ 
     myCommand.Parameters.AddWithValue("@input", input); 
     // ... 
} 

이와 비슷한 내용도 참조하십시오. previous question.

관련 문제