টি-এসকিউএল-এর একটি এক্সএমএল স্ট্রিংয়ের বৈশিষ্ট্যগুলিতে আমি ডাবল উদ্ধৃতিগুলি কীভাবে এড়াতে পারি?


174

খুব সহজ প্রশ্ন - আমার একটি বৈশিষ্ট্য রয়েছে যাতে আমার ডাবল উক্তি থাকতে চাই I আমি কীভাবে সেগুলি থেকে বাঁচতে পারি? আমি চেষ্টা করেছিলাম

  • \ "
  • ""
  • \\ "

এবং আমি তাদের সকলের জন্য @ xML ভেরিয়েবল এক্সএমএল টাইপ এবং ভারচার (সর্বোচ্চ) উভয় তৈরি করেছি।

 declare @xml xml --(or varchar(max) tried both)

 set @xml = '<transaction><item value="hi "mom" lol" 
    ItemId="106"  ItemType="2"  instanceId="215923801"  dataSetId="1" /></transaction>'

 declare @xh int
 exec sp_xml_preparedocument @xh OUTPUT, @xml

 insert into @commits --I declare the table, just removed it for brevity
 select
    x.*
 from openxml(@xh,'/transaction/item')
  WITH (
    dataItemId int,
     dataItemType int,
    instanceId int,
    dataSetId int,
    value varchar(max)
  ) x

1
যাইহোক, এখানে ওপেনএক্সএমএল ব্যবহার করার কোনও কারণ নেই (এএফএইকি) ... এটি "2005-পূর্ব" স্টাফ। আপনার যদি একটি এক্সএমএল মান থাকে তবে এটি সরাসরি এক্সএমএল হিসাবে ব্যবহার করুন।
মার্ক গ্র্যাভেল

মার্ক - আপনাকে ধন্যবাদ। আমার আর একটি ত্রুটি ছিল যা ওপেনএক্সএমএল হ'ল কোঁকড়ানো এস্ট্রোফেসগুলি নিয়ে বস্টিং করছিল: 'আমি মনে করি এটি গুগলের সন্ধানের জন্য আমি একটি প্রশ্ন / উত্তর হিসাবে পোস্ট করব।
টম রিটার 17'09

উত্তর:


273

এটি কি &quot;এক্সএমএল হবে না? অর্থাত

"hi &quot;mom&quot; lol" 

** সম্পাদনা: ** পরীক্ষিত; ঠিকভাবে কাজ করে:

declare @xml xml

 set @xml = '<transaction><item value="hi &quot;mom&quot; lol" 
    ItemId="106"  ItemType="2"  instanceId="215923801"  dataSetId="1" /></transaction>'

select @xml.value('(//item/@value)[1]','varchar(50)')

4

টিএসকিউএল অন্য একটি ডাবল উদ্ধৃতি সহ একটি ডাবল উদ্ধৃতি থেকে রক্ষা পেয়েছে। সুতরাং আপনি যদি এটি চান যে এটি আপনার এসকিএল স্ট্রিংয়ের আক্ষরিক অংশ হয়ে উঠতে পারেন তবে আপনি এটি করতে পারেন:

declare @xml xml 
set @xml = "<transaction><item value=""hi"" /></transaction>"

আপনি যদি এক্সএমএলটিতে কোনও মানের ভিতরে একটি উদ্ধৃতি অন্তর্ভুক্ত করতে চান তবে আপনি এমন একটি সত্তা ব্যবহার করেন যা দেখতে এটির মতো হবে:

declare @xml xml
set @xml = "<transaction><item value=""hi &quot;mom&quot; lol"" /></transaction>"

4
এসকিউএল স্ট্রিং ডিলিমিটার হিসাবে ডাবল-কোট ব্যবহার না করাই সেরা। একক উদ্ধৃতিগুলি এএনএসআই স্ট্যান্ডার্ড এবং QUOTED_IDENTIFIER সেটিংস নির্বিশেষে সর্বদা কাজ করে।
বোবিনস

রাজি হয়েছি, তবে আমি এটি প্রদর্শন করতে চেয়েছিলাম যে এটি সম্ভব, কেবল যদি সে করার চেষ্টা করছিল সে সম্পর্কে কোনও বিভ্রান্তি ঘটেছিল।
জোয়েল কোহর্ন 13

4

আর মন্তব্য করতে পারবেন না তবে ভোট দিয়েছিলেন এবং &quot;লোকেদের জানাতে চেয়েছিলেন যে সোলারে রেগেক্সট্রান্সফর্মার এর জন্য রেগেক্স এক্সপ্রেশন তৈরি করার সময় এক্সএমএল কনফিগারেশন ফাইলগুলির জন্য খুব ভাল কাজ regex=".*img src=&quot;(.*)&quot;.*"করে : ডাবল-কোটের পরিবর্তে পালিয়ে যাওয়া সংস্করণটি ব্যবহার করে।


2

আক্ষরিক স্ট্রিং পরীক্ষার জন্য জেলি.কোরে একটি ব্যবহার করবে:

&lt;core:when test="${ name == 'ABC' }"&gt; 

তবে যদি আমাকে "খেলনাগুলির আর আমাদের" স্ট্রিংটি পরীক্ষা করতে হয়:

&lt;core:when test="${ name == &amp;quot;Toy&apos;s R Us&amp;quot; }"&gt;

এটি এর মতো হবে, যদি ভিতরে ডাবল উদ্ধৃতিগুলির অনুমতি দেওয়া হয়:

&lt;core:when test="${ name == "Toy's R Us" }"&gt; 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.