T-SQL LIKE Predicate failed to match with whitespace in XML converted varcharCan XML columns in Oracle/MS SQL Server replace document oriented databases to some extent?Help with SQL Query to XML outputLike predicate to match a whole word onlyHow to cast a list of values within xquery in SQL Server?SQL to XML with multiple valuesSQL server Like pattern match with CONCAT() always failsWhen converting dynamic SQL (pivot query) to xml output, why is the first digit of the date converted to unicode?How To Read HTML code as XML and get the output like the sample in sql?Conversion of a varchar data type to a datetime data type resulted in an out-of-range value in SQL queryXML/SQL Server 2008 Error: XQuery…Cannot implicitly atomize or apply 'fn:data()' to complex content elements

PTIJ What is the inyan of the Konami code in Uncle Moishy's song?

Asserting that Atheism and Theism are both faith based positions

In the 1924 version of The Thief of Bagdad, no character is named, right?

What if (if any) the reason to buy in small local stores?

Writing in a Christian voice

Fewest number of steps to reach 200 using special calculator

Is there a term for accumulated dirt on the outside of your hands and feet?

Four married couples attend a party. Each person shakes hands with every other person, except their own spouse, exactly once. How many handshakes?

How is the partial sum of a geometric sequence calculated?

What favor did Moody owe Dumbledore?

Worshiping one God at a time?

Is honey really a supersaturated solution? Does heating to un-crystalize redissolve it or melt it?

Fragmentation Level for Heaps

Can you move over difficult terrain with only 5' of movement?

Brake pads destroying wheels

Usage and meaning of "up" in "...worth at least a thousand pounds up in London"

TikZ-decoration: control decoration amplitude along curve

What does "^L" mean in C?

In Aliens, how many people were on LV-426 before the Marines arrived​?

Is this an example of a Neapolitan chord?

What should I install to correct "ld: cannot find -lgbm and -linput" so that I can compile a Rust program?

Print last inputted byte

How do hiring committees for research positions view getting "scooped"?

What exactly term 'companion plants' means?



T-SQL LIKE Predicate failed to match with whitespace in XML converted varchar


Can XML columns in Oracle/MS SQL Server replace document oriented databases to some extent?Help with SQL Query to XML outputLike predicate to match a whole word onlyHow to cast a list of values within xquery in SQL Server?SQL to XML with multiple valuesSQL server Like pattern match with CONCAT() always failsWhen converting dynamic SQL (pivot query) to xml output, why is the first digit of the date converted to unicode?How To Read HTML code as XML and get the output like the sample in sql?Conversion of a varchar data type to a datetime data type resulted in an out-of-range value in SQL queryXML/SQL Server 2008 Error: XQuery…Cannot implicitly atomize or apply 'fn:data()' to complex content elements













3















Recently I attempt to search for a particular pattern by converting XML data into varchar(max) although I'm aware it's not the best practice and found out it's not working as expected:-



Setup



declare @container table(
[Response] xml not null
);

declare @xml xml =
'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://abc.com/xsd" xmlns:ns="http://abc.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<ns:MessageHeader>
<xsd:ID>ABC</xsd:ID>
<xsd:Date>2018-12-31T23:59:59</xsd:Date>
</ns:MessageHeader>
</soapenv:Header>
<soapenv:Body>
<ns:MessageResponse>
<ns:return>
<xsd:ResponseList xsi:nil="true" />
</ns:return>
</ns:MessageResponse>
</soapenv:Body>
</soapenv:Envelope>';

insert into @container values (@xml);


This query works



select *
from @container
where cast(Response as varchar(max))
like '%<xsd:ResponseList xsi:nil="true"%';


notice the wildcard character ends 3 characters (i.e.' />') before the XML node



but this is not



select *
from @container
where cast(Response as varchar(max))
like '%<xsd:ResponseList xsi:nil="true" %' -- with space
or cast(Response as varchar(max))
like '%<xsd:ResponseList xsi:nil="true" />%' -- whole XML node;


I suspect this is probably due to escape characters and tried a few other alternatives but to no avail, appreciate if someone can shed some light on this.



EDIT (ANSWERED)



Following query would work based on Mr. Browstone's insight:-



select *
from @container
where cast(Response as varchar(max))
like '%<xsd:ResponseList xsi:nil="true"/>%';


Here's my follow question @ CodeReview with XQuery expression:-



T-SQL Verify whether XML node from SOAP request contains any child nodes










share|improve this question




























    3















    Recently I attempt to search for a particular pattern by converting XML data into varchar(max) although I'm aware it's not the best practice and found out it's not working as expected:-



    Setup



    declare @container table(
    [Response] xml not null
    );

    declare @xml xml =
    '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://abc.com/xsd" xmlns:ns="http://abc.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
    <ns:MessageHeader>
    <xsd:ID>ABC</xsd:ID>
    <xsd:Date>2018-12-31T23:59:59</xsd:Date>
    </ns:MessageHeader>
    </soapenv:Header>
    <soapenv:Body>
    <ns:MessageResponse>
    <ns:return>
    <xsd:ResponseList xsi:nil="true" />
    </ns:return>
    </ns:MessageResponse>
    </soapenv:Body>
    </soapenv:Envelope>';

    insert into @container values (@xml);


    This query works



    select *
    from @container
    where cast(Response as varchar(max))
    like '%<xsd:ResponseList xsi:nil="true"%';


    notice the wildcard character ends 3 characters (i.e.' />') before the XML node



    but this is not



    select *
    from @container
    where cast(Response as varchar(max))
    like '%<xsd:ResponseList xsi:nil="true" %' -- with space
    or cast(Response as varchar(max))
    like '%<xsd:ResponseList xsi:nil="true" />%' -- whole XML node;


    I suspect this is probably due to escape characters and tried a few other alternatives but to no avail, appreciate if someone can shed some light on this.



    EDIT (ANSWERED)



    Following query would work based on Mr. Browstone's insight:-



    select *
    from @container
    where cast(Response as varchar(max))
    like '%<xsd:ResponseList xsi:nil="true"/>%';


    Here's my follow question @ CodeReview with XQuery expression:-



    T-SQL Verify whether XML node from SOAP request contains any child nodes










    share|improve this question


























      3












      3








      3








      Recently I attempt to search for a particular pattern by converting XML data into varchar(max) although I'm aware it's not the best practice and found out it's not working as expected:-



      Setup



      declare @container table(
      [Response] xml not null
      );

      declare @xml xml =
      '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://abc.com/xsd" xmlns:ns="http://abc.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Header>
      <ns:MessageHeader>
      <xsd:ID>ABC</xsd:ID>
      <xsd:Date>2018-12-31T23:59:59</xsd:Date>
      </ns:MessageHeader>
      </soapenv:Header>
      <soapenv:Body>
      <ns:MessageResponse>
      <ns:return>
      <xsd:ResponseList xsi:nil="true" />
      </ns:return>
      </ns:MessageResponse>
      </soapenv:Body>
      </soapenv:Envelope>';

      insert into @container values (@xml);


      This query works



      select *
      from @container
      where cast(Response as varchar(max))
      like '%<xsd:ResponseList xsi:nil="true"%';


      notice the wildcard character ends 3 characters (i.e.' />') before the XML node



      but this is not



      select *
      from @container
      where cast(Response as varchar(max))
      like '%<xsd:ResponseList xsi:nil="true" %' -- with space
      or cast(Response as varchar(max))
      like '%<xsd:ResponseList xsi:nil="true" />%' -- whole XML node;


      I suspect this is probably due to escape characters and tried a few other alternatives but to no avail, appreciate if someone can shed some light on this.



      EDIT (ANSWERED)



      Following query would work based on Mr. Browstone's insight:-



      select *
      from @container
      where cast(Response as varchar(max))
      like '%<xsd:ResponseList xsi:nil="true"/>%';


      Here's my follow question @ CodeReview with XQuery expression:-



      T-SQL Verify whether XML node from SOAP request contains any child nodes










      share|improve this question
















      Recently I attempt to search for a particular pattern by converting XML data into varchar(max) although I'm aware it's not the best practice and found out it's not working as expected:-



      Setup



      declare @container table(
      [Response] xml not null
      );

      declare @xml xml =
      '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://abc.com/xsd" xmlns:ns="http://abc.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Header>
      <ns:MessageHeader>
      <xsd:ID>ABC</xsd:ID>
      <xsd:Date>2018-12-31T23:59:59</xsd:Date>
      </ns:MessageHeader>
      </soapenv:Header>
      <soapenv:Body>
      <ns:MessageResponse>
      <ns:return>
      <xsd:ResponseList xsi:nil="true" />
      </ns:return>
      </ns:MessageResponse>
      </soapenv:Body>
      </soapenv:Envelope>';

      insert into @container values (@xml);


      This query works



      select *
      from @container
      where cast(Response as varchar(max))
      like '%<xsd:ResponseList xsi:nil="true"%';


      notice the wildcard character ends 3 characters (i.e.' />') before the XML node



      but this is not



      select *
      from @container
      where cast(Response as varchar(max))
      like '%<xsd:ResponseList xsi:nil="true" %' -- with space
      or cast(Response as varchar(max))
      like '%<xsd:ResponseList xsi:nil="true" />%' -- whole XML node;


      I suspect this is probably due to escape characters and tried a few other alternatives but to no avail, appreciate if someone can shed some light on this.



      EDIT (ANSWERED)



      Following query would work based on Mr. Browstone's insight:-



      select *
      from @container
      where cast(Response as varchar(max))
      like '%<xsd:ResponseList xsi:nil="true"/>%';


      Here's my follow question @ CodeReview with XQuery expression:-



      T-SQL Verify whether XML node from SOAP request contains any child nodes







      sql-server t-sql xml like string-searching






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 11 hours ago







      Zephyr

















      asked 13 hours ago









      ZephyrZephyr

      5815




      5815




















          1 Answer
          1






          active

          oldest

          votes


















          7














          This is by design.



          When you store a document using the XML data type it is compressed and organised into a structure that Sql Server can perform operations on efficiently. One of the steps that it goes through to do this is to generate the InfoSet. When it does this, it removes anything that it determines to not be necessary, in your example, whitespace:




          The InfoSet content may not be an identical copy of the text XML, because the following information is not retained: insignificant white spaces, order of attributes, namespace prefixes, and XML declaration.




          When you select the entire contents of the field (such as when you are converting it to NVARCHAR(MAX) it rebuilds the XML document before returning it. This document may not be an identical copy of the document that you inserted. For example, if you have used self-closing elements, Sql Server may return opening and closing elements instead.



          The documentation also continues on to say:




          Example: Retaining Exact Copies of XML Data



          For illustration, assume that government regulations require you to retain exact textual copies of your XML documents. For example, these could include signed documents, legal documents, or stock transaction orders. You may want to store your documents in a [n]varchar(max) column.




          So, if you want to store the exact copy of your document, then NVARCHAR(MAX) or VARCHAR(MAX) is the best option. You can then convert it to XML to query it later on (though this can be costly).



          For more information, see the documentation on XML Data Type and Columns (SQL Server) and also Define the Serialization of XML Data which outlines the rules that Sql Server applies when converting XML to a string type.






          share|improve this answer




















          • 2





            Ah good to know that, I've tried to remove space-in-between the self-closing tag and everything works fine! Many thanks Mr. Brownstone!

            – Zephyr
            11 hours ago










          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "182"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f232358%2ft-sql-like-predicate-failed-to-match-with-whitespace-in-xml-converted-varchar%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          7














          This is by design.



          When you store a document using the XML data type it is compressed and organised into a structure that Sql Server can perform operations on efficiently. One of the steps that it goes through to do this is to generate the InfoSet. When it does this, it removes anything that it determines to not be necessary, in your example, whitespace:




          The InfoSet content may not be an identical copy of the text XML, because the following information is not retained: insignificant white spaces, order of attributes, namespace prefixes, and XML declaration.




          When you select the entire contents of the field (such as when you are converting it to NVARCHAR(MAX) it rebuilds the XML document before returning it. This document may not be an identical copy of the document that you inserted. For example, if you have used self-closing elements, Sql Server may return opening and closing elements instead.



          The documentation also continues on to say:




          Example: Retaining Exact Copies of XML Data



          For illustration, assume that government regulations require you to retain exact textual copies of your XML documents. For example, these could include signed documents, legal documents, or stock transaction orders. You may want to store your documents in a [n]varchar(max) column.




          So, if you want to store the exact copy of your document, then NVARCHAR(MAX) or VARCHAR(MAX) is the best option. You can then convert it to XML to query it later on (though this can be costly).



          For more information, see the documentation on XML Data Type and Columns (SQL Server) and also Define the Serialization of XML Data which outlines the rules that Sql Server applies when converting XML to a string type.






          share|improve this answer




















          • 2





            Ah good to know that, I've tried to remove space-in-between the self-closing tag and everything works fine! Many thanks Mr. Brownstone!

            – Zephyr
            11 hours ago















          7














          This is by design.



          When you store a document using the XML data type it is compressed and organised into a structure that Sql Server can perform operations on efficiently. One of the steps that it goes through to do this is to generate the InfoSet. When it does this, it removes anything that it determines to not be necessary, in your example, whitespace:




          The InfoSet content may not be an identical copy of the text XML, because the following information is not retained: insignificant white spaces, order of attributes, namespace prefixes, and XML declaration.




          When you select the entire contents of the field (such as when you are converting it to NVARCHAR(MAX) it rebuilds the XML document before returning it. This document may not be an identical copy of the document that you inserted. For example, if you have used self-closing elements, Sql Server may return opening and closing elements instead.



          The documentation also continues on to say:




          Example: Retaining Exact Copies of XML Data



          For illustration, assume that government regulations require you to retain exact textual copies of your XML documents. For example, these could include signed documents, legal documents, or stock transaction orders. You may want to store your documents in a [n]varchar(max) column.




          So, if you want to store the exact copy of your document, then NVARCHAR(MAX) or VARCHAR(MAX) is the best option. You can then convert it to XML to query it later on (though this can be costly).



          For more information, see the documentation on XML Data Type and Columns (SQL Server) and also Define the Serialization of XML Data which outlines the rules that Sql Server applies when converting XML to a string type.






          share|improve this answer




















          • 2





            Ah good to know that, I've tried to remove space-in-between the self-closing tag and everything works fine! Many thanks Mr. Brownstone!

            – Zephyr
            11 hours ago













          7












          7








          7







          This is by design.



          When you store a document using the XML data type it is compressed and organised into a structure that Sql Server can perform operations on efficiently. One of the steps that it goes through to do this is to generate the InfoSet. When it does this, it removes anything that it determines to not be necessary, in your example, whitespace:




          The InfoSet content may not be an identical copy of the text XML, because the following information is not retained: insignificant white spaces, order of attributes, namespace prefixes, and XML declaration.




          When you select the entire contents of the field (such as when you are converting it to NVARCHAR(MAX) it rebuilds the XML document before returning it. This document may not be an identical copy of the document that you inserted. For example, if you have used self-closing elements, Sql Server may return opening and closing elements instead.



          The documentation also continues on to say:




          Example: Retaining Exact Copies of XML Data



          For illustration, assume that government regulations require you to retain exact textual copies of your XML documents. For example, these could include signed documents, legal documents, or stock transaction orders. You may want to store your documents in a [n]varchar(max) column.




          So, if you want to store the exact copy of your document, then NVARCHAR(MAX) or VARCHAR(MAX) is the best option. You can then convert it to XML to query it later on (though this can be costly).



          For more information, see the documentation on XML Data Type and Columns (SQL Server) and also Define the Serialization of XML Data which outlines the rules that Sql Server applies when converting XML to a string type.






          share|improve this answer















          This is by design.



          When you store a document using the XML data type it is compressed and organised into a structure that Sql Server can perform operations on efficiently. One of the steps that it goes through to do this is to generate the InfoSet. When it does this, it removes anything that it determines to not be necessary, in your example, whitespace:




          The InfoSet content may not be an identical copy of the text XML, because the following information is not retained: insignificant white spaces, order of attributes, namespace prefixes, and XML declaration.




          When you select the entire contents of the field (such as when you are converting it to NVARCHAR(MAX) it rebuilds the XML document before returning it. This document may not be an identical copy of the document that you inserted. For example, if you have used self-closing elements, Sql Server may return opening and closing elements instead.



          The documentation also continues on to say:




          Example: Retaining Exact Copies of XML Data



          For illustration, assume that government regulations require you to retain exact textual copies of your XML documents. For example, these could include signed documents, legal documents, or stock transaction orders. You may want to store your documents in a [n]varchar(max) column.




          So, if you want to store the exact copy of your document, then NVARCHAR(MAX) or VARCHAR(MAX) is the best option. You can then convert it to XML to query it later on (though this can be costly).



          For more information, see the documentation on XML Data Type and Columns (SQL Server) and also Define the Serialization of XML Data which outlines the rules that Sql Server applies when converting XML to a string type.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 13 hours ago

























          answered 13 hours ago









          Mr.BrownstoneMr.Brownstone

          9,56432342




          9,56432342







          • 2





            Ah good to know that, I've tried to remove space-in-between the self-closing tag and everything works fine! Many thanks Mr. Brownstone!

            – Zephyr
            11 hours ago












          • 2





            Ah good to know that, I've tried to remove space-in-between the self-closing tag and everything works fine! Many thanks Mr. Brownstone!

            – Zephyr
            11 hours ago







          2




          2





          Ah good to know that, I've tried to remove space-in-between the self-closing tag and everything works fine! Many thanks Mr. Brownstone!

          – Zephyr
          11 hours ago





          Ah good to know that, I've tried to remove space-in-between the self-closing tag and everything works fine! Many thanks Mr. Brownstone!

          – Zephyr
          11 hours ago

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Database Administrators Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f232358%2ft-sql-like-predicate-failed-to-match-with-whitespace-in-xml-converted-varchar%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Благоевград Съдържание География | История | Население | Политика | Икономика и инфрастуктура | Здравеопазване | Образование и наука | Култура и забавления | Забележителности | Личности | Литература | Външни препратки | Бележки | Навигация42°01′18.99″ с. ш. 23°05′51″ и. д. / 42.021944° с. ш. 23.0975° и. д.*БлагоевградразширитередактиранеОфициален уебсайт на община БлагоевградНовинарски портал на Благоевград – blagoevgrad.euСайтове за БлагоевградНационален статистически институтdariknews.bgГригоровичъ, Викторъ. „Очеркъ путешествія по Европейской Турціи“. Москва, 1877.Стрезов, Георги. Два санджака от Източна Македония. Периодично списание на Българското книжовно дружество в Средец, кн. XXXVII и XXXVIII, 1891, стр. 18 – 19.Македония. Етнография и статистикаГаджанов, Димитър Г. Мюсюлманското население в Новоосвободените земи, в: Научна експедиция в Македония и Поморавието 1916, Военноиздателски комплекс „Св. Георги Победоносец“, Университетско издателство „Св. Климент Охридски“, София, 1993, стр. 244.паметник на незнайния четник&cd=18&hl=en&ct=clnk&client=firefox-a „История на днешен Благоевград“, взето от www.museumblg.com на 16 март 2010 г.„Справка за населението на град Благоевград, община Благоевград, област Благоевград, НСИ“„The population of all towns and villages in Blagoevgrad Province with 50 inhabitants or more according to census results and latest official estimates“„Ethnic composition, all places: 2011 census“История на Неврокопска епархия.Национален статистически институтМюсюлманско изповедание. Главно мюфтийствоНационален публичен регистър на храмовете в БългарияМюсюлманско изповедание. Главно мюфтийствоwww.dnes.bg Джамията в Благоевград не била паленаwww.sesc-bg.orgСписък на побратимени градовеТехническо побратимяванеГУМ грейва в цветовете на нощен Лас Вегас под името „Largo“, „МОЛ Благоевград“..., в. „Струма“grabo.bgwww.cinemaxbg.comррр4238731-067cad53a-0546-417b-a3d3-51e49b1d2232147736077147736077

          What is the best defense strategy for Survival in Grand Theft Auto Online?What is JP used for in Grand Theft Auto Online?How do I setup a Crew HQ in Grand Theft Auto Online?How does stealth work in Grand Theft Auto Online?Is it possible to own more than 10 cars in Grand Theft Auto online?Where to find truck/trailers in Grand Theft Auto OnlineWhat are some of the best missions to do on Grand Theft Auto 5 onlineFastest Car in Grand Theft Auto V PCHow to setup a Crew vs Crew online session in Grand Theft Auto Online?Grand theft auto 5 crossplayingRestart Grand Theft Auto V Online?

          How does Billy Russo acquire his 'Jigsaw' mask? Unicorn Meta Zoo #1: Why another podcast? Announcing the arrival of Valued Associate #679: Cesar Manara Favourite questions and answers from the 1st quarter of 2019Why does Bane wear the mask?Why does Kylo Ren wear a mask?Why did Captain America remove his mask while fighting Batroc the Leaper?How did the OA acquire her wisdom?Is Billy Breckenridge gay?How does Adrian Toomes hide his earnings from the IRS?What is the state of affairs on Nootka Sound by the end of season 1?How did Tia Dalma acquire Captain Barbossa's body?How is one “Deemed Worthy”, to acquire the Greatsword “Dawn”?How did Karen acquire the handgun?