2013-04-24 3 views
3

데이터베이스 테이블에서 문자열 패턴을 검색하려고합니다.엔터티 프레임 워크에서 Regex를 사용하여 검색

검색 패턴은 단순히 사용자가 입력 한 문자열입니다. 그러나 검색 할 필드에는 사이에 공백이있을 수 있으며, 사용자는 문자열에 공백을 입력 할 수 있습니다.

그래서 내가 정규식을 만들려면 이러한 문자열은 "테스트", 라고하면 내가 사이에 공백이있을 수 있습니다 정규식이

T[\s]*e[\s]*s[\s]*t. 

같은 것을 찾는 것이 사람이하는 방법을 제안시겠습니까 Entity 프레임 워크에서 또는 ESQL을 사용하여이 작업을 수행 할 수 있습니까?

+0

정규식을 사용하는 유일한 이유는 공백입니까? 필드와 검색 조건에서 모든 공백을 제거하고 비교할 수 있습니다. – ckal

+0

사용자가 입력했기 때문에 데이터베이스의 필드에서 공백을 제거 할 수 없으며이를 그대로 유지해야합니다. – gunnerz

답변

2

해당 패턴의 경우 Regex가 필요하지 않습니다. 당신은 그 (것)들을 트리밍 해제하고, 그 다음 검색을하는 것이 가장 좋습니다. 다음과 같이 할 수 있습니다 :

SELECT * FROM MyTable 
WHERE REPLACE(MyColumn, ' ', '') LIKE '%' + REPLACE(@YourVariable, ' ', '') + '%' 
+0

이것은 문제의 절반 만 해결합니다. 공백이 없으면 데이터베이스에 레코드를 찾습니다. 그러나 사용자는 공백이있는 레코드를 입력 할 수 있으며 문자 뒤에 공백을 넣을 수 있습니다. 이 검색은 작동하지 않습니다. 왜 정규식이 필요한지. – gunnerz

+0

@gunnerz 그러면 우리는 열의 공백도 제거 할 수 있으므로 둘 다 동일하게 비교됩니다. 업데이트 된 수정 내용을 확인하십시오. 나는 둘 다 다듬기를 추가했다. – mattytommo

+0

고맙습니다. 검색이 얼마나 효율적인지 확신 할 수 없습니다. 또한 엔티티 프레임 워크에서 ESQL을 사용하는 유일한 길을 추측합니다. – gunnerz