2013-02-21 3 views
1

나는 ID와 텍스트 필드가 있습니다.정확히 일치하는/심지어 startingwith 단어가 작동하지 않는 문자열에서 단어를 검색

정확히 일치하는 단어를 검색하거나 단일 mysql 쿼리로 단어의 단어로 시작해야합니다.

예 : select * from tablename where textfield like "%cam%. 이렇게하면 cam에있는 텍스트 ID가 모두 단일 문자로 반환됩니다.

하지만 문장에서 한 단어를 분리하여 쿼리 할 수있는 결과를 얻어야합니다.

ID 텍스트

1 Camel_walk. 
2 camel does drink water. 
3 does Camel_store water. 
4 In deset people can find_camel 
5 this will not return 

내가 먼저 select * from tablename where textfield like "%camel%. 반환 1,2,3,4

쿼리하지만 난 단어가 낙타로 시작하는 ID를 얻을 필요가있을 때

1)select * from tablename where textfield like "Camel%" 
return 1,3 (which is not working for me) 
or even 
2)select * from tablename where textfield like "%Camel" 
return 4 

이 두 쿼리가 작동하지 않습니다. 도와 드릴 수 있습니까?

감사

+0

''% Camel % "와 같은 텍스트가 1,3을 반환하는 tablename의 select id. 같은 연산자로 적절한 (또는 낙타) 케이스를 사용하면 검색이 대소 문자를 구분합니다. 일관성있는 대소 문자는 대/소문자를 구분하지 않습니다. – Fr0zenFyr

+0

'tablename에서 select id, "% camel"과 같은 텍스트는 4를 반환합니다. 문자열의 경우 차이점을 확인하십시오.'tabelename에서 id를 선택하십시오. "% camel %"와 같은 텍스트는 1,2,3,4를 반환합니다. 'tablename에서 "camel %"와 같은 텍스트가'1을 반환합니다.''camel % "와 같은 텍스트가 1,2를 반환하는 tablename에서 id를 선택하십시오. 'tablename에서 "camel %"와 같은 텍스트가 2를 반환 할 id를 선택하십시오. – Fr0zenFyr

+0

이것은 기본 SQL입니다. 약간 복잡한 SQL 문조차도 아닙니다. 내가 왜 cakephp와 같은 프레임 워크를 사용한다면 견고한 SQL 쿼리를 찾고 있을까? IMHO, 케이크에 하드 코딩 된 SQL을 사용하는 것은 현명하지 않습니다. – Fr0zenFyr

답변

0
select * from tablename where textfield like "Camel%" or textfield like ' %Camel' 

주의 두 번째 조건에서 % 전에 공간. 이 두 조건은 문자열에서 Camel으로 시작하는 단어가 일치 할 때 일치하며 첫 단어인지 여부는 중요하지 않습니다.

+0

나는 단지 id 대신 * – mkaatman

+0

을 선택할 것입니다. 비슷한 쿼리에서 적절한/낙타의 사용은 모든 결과를 반환하지 않을 것이라고 생각했습니다. 적어도, 그것은 나를 위해 일한 적이 없어. ... % Camel % 님과 같이 ... "낙타"또는 "낙타"또는 "낙타"가 아닌 "낙타"가 포함 된 항목을 찾습니다. – Fr0zenFyr

+0

Camel 앞의 탭 문자에는 작동하지 않습니다. – Victor

0

이것은 당신이 낙타 쿼리와 같은 SQL에서 (적절한) 케이스를 사용하는 경우, 문자열이 문자열의 대소 문자 구분 일치를 찾을 수

SELECT id 
    from tablename 
WHERE textfield like '%[^A-z^0-9]Camel%' -- In the middle of a sentence 
    OR textfield like 'Camel%'   -- At the beginning of a sentence 
2

, 모든 경우 그러나, "낙타"를 작동해야하고 "CAMEL"은 낙타/CAMEL/Camel ...을 찾습니다 (대소 문자를 구분하지 않는 일치)

select id from tablename where text like "%Camel%"은 1,3을 반환합니다. 1,2,3,4를 반환합니다 4.

select id from tablename where text like "%camel%"

select id from tablename where text like "%camel"

반환됩니다. 1, 2를 반환합니다 1.

select id from tablename where text like "camel%"

select id from tablename where text like "Camel%"

반환됩니다.

select id from tablename where text like "camel %" ("낙"및 "%"사이의 공간) 2.

통지 문자열의 경우의 차이를 리턴한다.

+0

1,2,3 결과를 원한다면 우리가하는 일 .... –

+0

'tablename에서 select id where "camel_ %"와 같은 텍스트 또는 'camel %'와 같은 텍스트 – Fr0zenFyr

0

사용자 매치

대해 $ 조건 [] ("BOOLEAN MODE IN ('$ 텍스트') AGAINST MATCH (MODEL_name.fieldname)") = 어레이;

관련 문제