2012-01-19 9 views
10

SQL Server 2008에서이 T-SQL 쿼리를 사용하고 있습니다.SQL-Update 문에서 작은 따옴표와 큰 따옴표를 모두 처리하는 방법

DECLARE nvarchar(1000) @wstring = "I asked my son's teacher, "How is my son doing now?"" 

UPDATE tablename SET columnname = ' " & @wstring & " ' where ... blah ... blah 

위의 쿼리에서 오류가 발생한다는 것을 알고 있습니다.

그래서 SQL-Update 문에서 작은 따옴표와 큰 따옴표를 어떻게 처리합니까?

bouble-quote의 모든 인용문 앞에 '슬래시'나 작은 따옴표를 수동으로 추가하는 것에 대해 제안하지 마십시오.

위 예제는 단지 하나의 실제 응용 프로그램 값이고 다른 시스템 소스에서 수신되는 1000 문자 이상이기 때문에 이는 비실용적입니다.

+0

SQL 클라이언트에 수동으로 삽입 할 특정 텍스트 파일이 있습니까?아니면 파일을 삽입 할 프로그램을 작성하고 있습니까? 클라이언트에서 프로그램을 작성하는 방법을 파악하기 위해 테스트하고 있습니까? –

+0

는 C#을 사용하고 있습니까? – Pankaj

+0

Thx Russell ... 상황을 이해하려고 애쓰는 중입니다. 시나리오는 다음과 같습니다.이 1000 개 이상의 문자열을 보내는 다양한 시스템이 있습니다. 이제이 문자열은 sql 매개 변수로 전달되고 sql update-query는 문자열을 특정 열에 삽입해야합니다. – MukeshAnAlsoRan

답변

15

당신은 백 슬래시로 인용 부호를 탈출 할 수

"I asked my son's teacher, \"How is my son doing now?\"" 
+1

위의 예제는 단지 샘플이며 실제 응용 프로그램 값은 그 이상이므로 실제적으로 위 예제가 미적분이고 배제 된 경우에는 모든 인용문 앞에 작은 따옴표 나 따옴표를 수동으로 추가하면 1000 자. – MukeshAnAlsoRan

4

를 사용하여 두 개의 작은 따옴표는 SQL 문에서 그들을 탈출. 큰 따옴표는 문제가되지 않습니다 :

SELECT 'How is my son''s school helping him learn? "Not as good as Stack Overflow would!"' 

인쇄 : C# 및 VB SqlCommand 개체에서

How is my son's school helping him learn? "Not as good as Stack Overflow would!"

+0

감사합니다. 마이크. 그러나 이미 위 인용 예제가 단지 샘플이고 실제 응용 프로그램 값이 둘 이상이기 때문에 모든 인용문 앞에 작은 따옴표를 붙이거나 따옴표로 묶는 것이 수동으로 추가하는 것이 impractcal이며 배제되었다고 이미 말했어. 1000 자. – MukeshAnAlsoRan

+2

문자를 이스케이프 처리하는 것이 비실용적이라면 이스케이프 처리하는 것이 어려울 것이라고 생각합니다. 또는 "에 대한 대체 값을 결정하고 쿼리를 실행할 수 있도록 일괄로 바꾸십시오. 물론 필요할 때 올바른 값으로 다시 바꾸어야합니다. – mclark1129

+0

Ya Mike .. 나는 그 정도까지 뭔가를 생각했는데 ... 일괄 교체 및 비슷하게.하지만이 시나리오에 대한 과잉이라고 생각하고 SQL은이 문제를 처리하기위한 고유 한 우아한 방법이 있어야합니다. 10 년 전부터 존재 해왔다. – MukeshAnAlsoRan

4

을 처리 Parameter.AddWithValue 방법을 구현 어떤 언어로 프로그래밍하고 있는지, 함수를 사용하여 큰 따옴표를 두 개의 큰 따옴표로 대체 할 수 있습니다.

것 PHP에서 예를 들면 :

str_replace('"', '""', $string); 

당신은 SQL을 사용하는 경우에만, 어쩌면 REPLACE() 당신이 찾고있는 것을하려고 노력하는 경우.

그래서 쿼리는 다음과 같이 보일 것입니다 :

"UPDATE Table SET columnname = '" & REPLACE(@wstring, '"', '""') & "' where ... blah ... blah " 
1

사용 "REPLACE는"특수 문자를 제거합니다.

REPLACE(ColumnName ,' " ','') 

예 : -

빠져 나옵니다 ---

DECLARE @STRING AS VARCHAR(100) 
SET @STRING ='VI''RA""NJA "' 

SELECT @STRING 
SELECT REPLACE(REPLACE(@STRING,'''',''),'"','') AS MY_NAME 

--Result ---

VI'RA ""NJA "

0

SET QUOTED_IDENTIFIER가 꺼져 있으면 표현식의 리터럴 문자열을 작은 따옴표 나 큰 따옴표로 구분할 수 있습니다.

리터럴 문자열을 큰 따옴표로 구분하면 문자열에 작은 따옴표 (예 : 아포스트로피)를 포함 할 수 있습니다.

관련 문제