2014-10-14 4 views
0

like 절 내 단어에 가까운 모든 결과를 가져 오지 않으려 고합니다. 예를 들어 완전한 문장을 작성해야합니다.`like` 절이 내 단어 근처에있는 모든 결과를 가져 오지 않습니다.

데이터베이스에

나는 한 다음 데이터 :

  • Lion king
  • lionheart
  • level completed
  • good morning

나는 Lion king를 가져 오기하고자, 나는 정상에서 단어 lion의이 부분을 쓸 때 그것은하지 않는 한, 가져 오기 위해 완전한 문장을 작성해야합니다, 아무것도 가져 오지 않습니다 Lion kinglionheart,하지만 내 경우를 가져올합니다 자료.

  • SELECT * FROM table WHERE name LIKE '%text'

  • SELECT * FROM contacts WHERE name LIKE '%text' OR name LIKE 'text%' OR name LIKE '%text%' OR name LIKE text

주의 사항 :
내가 사용을 C++ Qt 프레임 워크 해요 다음은 무엇입니까

나는 다음과 같은 쿼리를 사용하려고 나는 했어.

qry.prepare("SELECT * FROM table WHERE name LIKE '%:text'"); 
qry.bindValue(":text", ui->searchBox_txt->text()); 
qry.exec(); 

어떻게하면 정상적인 동작을 수행 할 수 있습니까?

답변

1
:text 

대소 문자가 이름이 text

':text' 

되는 문자열 ":text"

하는 쿼리 매개 변수입니다 점에 유의

마찬가지로, "%:text"은 정확하게 그것이 무엇인지; 매개 변수는 문자열 내부에 있으므로 구문 분석되지 않습니다.

SELECT * FROM table WHERE name LIKE '%' || :text || '%' 
+0

잘 작동하지만 왜 여전히'||'을 사용하는지 이해할 수 없으며'% text %'와 같은 일반적인 방법을 사용할 때 왜 작동하지 않는 걸까요? 이해를 돕기 위해 설명을 단순하게 해주시겠습니까? –

+0

@LionKing 그것은 다른 프로그래밍 언어에서'x'와''x "'의 차이입니다; 하나는 변수 참조이고 다른 하나는 문자열 리터럴입니다. –

+0

감사합니다. 죄송 합니다만,'variable'과'literal string'의 차이점을 알고 있습니다 만,이 예인'variable'과'literal string'의 의미를 모르겠습니다. 당신의 설명은 여전히 ​​애매합니다. –

-1

% 뒤에 :을 제거하십시오. 이런 식으로 뭔가 :

SELECT * FROM table WHERE name LIKE '%text%' 

또한하시기 바랍니다 값이

+0

이':'정상이고, 나는 그것을 사용해야하며, 문제가 아니에요 때문에 사용

당신은 연결 연산자 (||)를 사용하여 '%'에 매개 변수를 연결할 필요 'C++ Qt 프레임 워크 '. –

+0

Oww .. 알겠습니다. 방금 공통 SQL 구문을 참조했습니다. –

+0

이 값은 대/소문자를 구분하지 않습니다. –

관련 문제