2011-03-19 1 views
0

다음과 같이 입력 할 수있는 기능을 구현하고자합니다.자연 언어를 SQL 쿼리로 변환하는 방법은 무엇입니까? 정확하지 않은 퍼지 쿼리 .SQLf

"select * from products where low(price);" 

"select * from products where (price >=0) And (price <= 50);" 

유용 할 수있는 솔루션을 알고 있습니까? 나? 두 번째 질문은 응용 프로그램 구조에서 변환해야하는 부분입니다. 응용 프로그램 코드 또는 어떻게 든 데이터베이스에?

내 응용 프로그램은 C#으로 작성되었으며 ADO.NET을 통해 SQL Server 2008에 연결됩니다.

나는 모든 힌트, 의사 코드, 등등에 매우 유용 할 것이다.

미리 감사드립니다!

답변

2

SQL Server에서는 사용자 정의 함수를 정의 할 수 있습니다 (for example this article 참조). low 함수를 정의한 경우 작성한 첫 번째 코드는 완벽하게 유효한 SQL 쿼리가되며 사전 처리를 전혀 수행 할 필요가 없습니다. 선언은 다음과 같이 크게 보일 것이다

CREATE FUNCTION low(@price) 
RETURNS boolean AS 
BEGIN 
    RETURN (@price >= 0) AND (@price <= 50) 
END 

당신이 그 다른 (그리고 훨씬 더 복잡한) 문제가 될 것입니다 단지 함수 호출보다 더 퍼지 언어를 할 수 있도록합니다. 나는 그것을하는 라이브러리를 알고 있지 않으며 자신을 구현하는 것은 상당한 도전이 될 수 있습니다. (당신이 의미하는 바를 알 수 있도록 더 많은 예제를 추가하고 싶을 수도 있습니다.)

물론 사용자가 원시 SQL 쿼리를 작성할 수 있도록 허용하면 사용자는 데이터베이스에서 모든 데이터를 쉽게 삭제할 수 있기 때문에 신뢰할 수있는 사람이어야합니다.

+0

SQL 인젝션 탐지 라이브러리를 사용하고자하는 솔루션으로 이것을 구현한다면 언급할만한 가치가 있습니다! – Ocelot20

관련 문제