2012-05-07 2 views
17

ms SQL 서버에서 이스케이프해야하는 특수 문자 목록을 찾고 있었지만 비슷한 질문에 대해 Parameterized 쿼리를 사용하는 것이 좋습니다. 나는 이미하고 있지만 사용하고있는 프레임 워크는 나를 도망 치지 못한다.Tsql에서 이스케이프해야하는 문자

따라서 나는 그 시도의 무리를주고 하나가 실패하는 볼 생각 .... 그리고 내가 찾을 수있는 나는 거의 모든 문자를 시도 같은 쿼리에서 간단한 쿼리

select * from x where value = '<characters>' 

시도 내 키보드에서 그리고 그들 모두는 일하는 것처럼 보입니다 ... Singe Quote 외에 ... 하나가 실패합니다.

따라서 나는 무효 및 MS SQL 서버에 이스케이프해야합니다 문자 목록을 알고 싶어요 - TSQL을 그냥 작은 따옴표를 탈출의 위험을 감수하고 문제

가 발생할 수 나머지를 마칠 수 없습니다

당신의 도움을 간절히 바란다

+2

어? 매개 변수화 된 쿼리의 문제점은 무엇입니까? – SLaks

+0

그들은 다른 프레임 워크에서 다르게 행동합니다 ... 나를 위해 일하지 않습니다 –

+5

그러면 문제를 해결해야합니다. – SLaks

답변

30

문자열에서 이스케이프해야하는 유일한 문자는 작은 따옴표입니다 (두 개의 작은 따옴표를 함께 사용). 그렇지 않으면, 문자열이고 t-SQL은 더 이상 그럴 필요가 없습니다. 당신이 LIKE 문을 사용하는 경우

은 제대로 나를 위해 물건을 탈출하지 않는 날이 매개 변수를 사용하지 않는 프레임 워크, 하드입니다 제쳐두고 Escape a string in SQL Server so that it is safe to use in LIKE expression

이 SO 항목을 참조하십시오 중지. 문자열 입력을 수동으로 살균하려고하는 것은 끌어 오기 방법에 의존하는 것과 같습니다. 결국 그것은 당신을 잡을 것입니다.

+0

감사합니다 HackedByChinese, 그게 내가 한 유일한 확인 이었어! –

+1

처음으로 수동 쿼리가 빠져 나가는 것과 같은 이스케이프를 본 적이 있습니다. – Corbin

+0

Apache Cayenne에게 감사드립니다! –

0

정확하지 않은지 확인하십시오.

%. 및 쿼리에 따라 다른 와일드 카드도 이스케이프 처리해야 할 수 있습니다. 점을 찾고있는 곳. 이 작업은 실패합니다.

select * from xxxx where field like '%.%' 
+1

답변을 훼손하지 마십시오. 잘못되었다고 생각되면 삭제하려는 게시물 아래의 "삭제"링크를 클릭하십시오. – Tunaki

0

저는 _ (밑줄)도 이스케이프해야한다고 말하고 싶습니다.

SomeColumn 'FD [_] %'그런데

, 매개 변수화 된 쿼리 잘못 아무것도 같은 제품에서 선택

*, 그러나 때때로 당신은 SQL 관리 콘솔로 이동하고 신속하게 찾기 위해 쿼리를 실행하려면 뭔가 밖으로.

관련 문제