SQL

2010-07-29 9 views
11

में एक निष्पादन कथन में एकल उद्धरण का उपयोग करके मुझे एक संग्रहित प्रो से एकल कथन वाले SQL कथन निष्पादित करने में समस्याएं आ रही हैं। यहां एक संग्रहीत प्रक्रिया से मेरी क्वेरी है जिसे मैं निष्पादित कर रहा हूं।SQL

EXEC('UPDATE myTABLE 
     SET myCOLUMN = (SELECT Replace('OSINGLEQUOTEJOHN DOE','SINGLEQUOTE','''')') 

मैं एक मूल्य के साथ तालिका "mytable" कॉलम "MyColumn" अद्यतन करने के लिए "O'John डो"

वास्तविक क्वेरी है इस तरह, मैं ऊपर में यह थोड़ा आसान बनाने की कोशिश की कोशिश कर रहा हूँ उदाहरण

EXEC('UPDATE myTABLE 
     SET myCOLUMN = (SELECT Replace('+ @IntegrationGuardian2FullName +','SINGLEQUOTE','''')') 

@IntegrationGuardian2FullName का मान "OSINGLEQUOTEJOHN डीओई" है। उम्मीद है कि अधिक समझ में आता है।

क्या कोई शरीर मुझे इस प्रश्न को स्वरूपित करने में मदद कर सकता है? स्ट्रिंग रैप करने के लिए तो दो एकल उद्धरण चिह्नों का उपयोग, और चार (यानी दो उद्धरण से बच गया), जो एकल की एक जोड़ी में अन-छोड़ दिया जाएगा -

उत्तर

17

उपयोग:

EXEC('UPDATE myTABLE 
     SET myCOLUMN = (SELECT REPLACE(''OSINGLEQUOTEJOHN DOE'', 
             ''SINGLEQUOTE'', 
             ''''''''))') 

जो आपने प्रदान किया है वह स्ट्रिंग के चारों ओर दो सिंगल कोट्स की आवश्यकता है, और क्या प्रतिस्थापित करना है, और अतिरिक्त सिंगल कोट्स डायनामिक एसक्यूएल के लिए आवश्यक एकल कोट के कारण आवश्यक है।

+0

एक "गलत वाक्यविन्यास पास करता है")। " त्रुटि। – Mithil

+0

@ मिथिल देशमुख: क्षमा करें, आखिरी भूल गए ")" - सही, SQL सर्वर 2008 एक्सप्रेस पर मेरे लिए काम करता है। –

+0

धन्यवाद बहुत ओएमजी पॉइन्स, जिसने चाल की थी। – Mithil

1
UPDATE myTABLE SET myCOLUMN='O''John Doe' 

EXEC('UPDATE myTABLE SET myCOLUMN=''O''John Doe''') 
8

आप उद्धृत स्ट्रिंग के अंदर एकल उद्धरण की दोबारा से बचने के लिए की जरूरत है उद्धरण जब क्वेरी पार्स किया गया है, और उसके बाद संयुक्त राष्ट्र-भाग निकले एकल उद्धरण में फिर से आप वास्तव में सम्मिलित करना चाहते हैं:

EXEC('UPDATE myTable SET myColumn = ''John''''O Doe''') 
+0

धन्यवाद, डायलन, यह सहायक था। – Mithil

2

जबकि ओएमजी पोनी का जवाब सही था और मुझे भी मदद मिली, जो कि मेरे लिए तुरंत स्पष्ट नहीं था कि यह कैसे काम करता है। यहां बताया गया है कि मैं कैसे समझता हूं, और किसी भी स्थिति पर लागू होने के लिए ओपी या किसी और को अभी भी देख सकता हूं।

एक सरल उदाहरण sp_change_users_login 'update_one', 'LName','Uname'

बदल select (' sp_change_users_login ''update_one '', ''LName '' ,''Uname '' ')

सब किया गया है का उपयोग करना, as OMG Ponies said एकल उद्धरण में पूरे विवरण (') लपेट है। फिर, प्रत्येक एकल उद्धरण जो पहले से मौजूद है (') के लिए, इसे आगे बढ़ाने के लिए एक और स्थान दें (')। मैं इसे स्पष्ट रूप से दिखाई देने के लिए, दूसरे कथन में जोड़े गए सिंगल कोट्स को बोल्ड करने में सक्षम नहीं हूं।

 संबंधित मुद्दे