2013-06-22 1 views
0

사용자가 콤보 상자에서 이름을 선택하거나 새 이름을 입력해야하는 vb.net 프로젝트에 시나리오가 있습니다. 물론SQL에서 따옴표 바꾸기

이름은 데이터베이스에 티나 O''Hara로 저장됩니다 티나 오하라 같이 '을 가질 수 있습니다.

내 combobox는 sql select 명령으로 채워집니다. 을 바꾸므로 이름이 드롭 다운에 올바르게 표시됩니다.

SqlStr = "SELECT Replace(ContactName, '''', ''') AS ddlText FROM tbl_Visits Where CustID = " & hd_CustID.value & " ORDER By ContactName" 
PopulateCMBX(cmbx_ContactName, SqlStr, "Please Select") 

PopulateCMBX는 ... 이것은 첫 번째 옵션으로 '선택하세요'와 콤보 상자 ITEMLIST을 공급 SqlStr에서 이름의 목록을 가져 와서 웁니다. 나는이 문제를 해결 어떻게 '의 일치 세트가 아니므로

SqlStr 오류를 생산하고있다. Thanks

+1

오류가 정확히 무엇을 말합니까? 왜 DB에 이름을 이중 어포 스트로피로 저장 했습니까? –

+0

작은 따옴표로 저장할 수 없습니다. 예를 들어 작동하지 않습니다. Tbl_Customer Value ('Tina O'Hara')에 삽입하여 Tina O''Hara로 삽입해야합니다. 그런 다음 내가 할 때마다 .Replace (" '", "'")를합니다. 그래도 내 콤보 상자를 채우기 위해 이것을 사용할 수는 없다. – Mych

+1

아포스트로피를 두 배로 저장할 필요가 없다. '티나 오하라 (Tina O''Hara) '를 삽입하면 작은 따옴표로 저장됩니다. 이 문자열을 매개 변수가있는 쿼리로 전달하는 경우를 제외하고는 어포 스트로피를 전혀 이스케이프 할 필요가 없습니다. –

답변

1

MS-SQL에서 작은 따옴표를 참조 할 때 작은 따옴표 (')를 사용하여 각 작은 따옴표 (')를 이스케이프 처리해야합니다.

('')와 같이 두 개의 작은 따옴표로 이름이 데이터베이스에 저장되는 경우 바꾸기를 수행 할 때 작은 따옴표 ('' ')를 사용해야합니다. 이 외에도 작은 따옴표로 문자열을 묶어야합니다.

이것이 의미하는 것은 다음과 같아야 대체한다는 것입니다 :

SqlStr = "SELECT Replace(ContactName, '''''', '''') ... 

바꾸기의 2 PARAM 6 따옴표가 있습니다 그것을 만들 수있는 4 교체 할 두 개의 작은 따옴표를 표현하기 위해, 그리고 (2) 문자열. 세 번째 매개 변수는 4 개의 작은 따옴표를 포함합니다. 즉, 이스케이프 된 단일 따옴표를 나타내는 데 2 ​​개가 사용되고, 두 개는 문자열이됩니다.

+0

Wonderful .... 신속한 답장을 보내 주셔서 감사합니다. 다른 사람들에게는 Order 섹션에 Replace 절을 추가해야했습니다. 그래서 완성 된 SQL은 .... "대체 (ContactName, '' '' ',' '') AS ddlText FROM tbl_Visits 어디에서 CustID ="& hd_CustID.value & '' ',' '' ') " – Mych

0

아마 최고의 솔루션이 함께 시도하지만 그것은 작동합니다 (확인이 example) :

select Replace(Replace(ContactName, '''', '$&'),'$&$&','''') from tbl_Visits 

$ &은 필드의 값에 영향을 미치지 않습니다 열쇠 같은 것을 예를 들어, 단어 : & & k & & 또는 %% key %% 등 위로 명확히하기 위해 최선의 해결책은 아니지만 때로는 사용했습니다.