{"id":626,"date":"2012-02-01T12:11:49","date_gmt":"2012-02-01T17:11:49","guid":{"rendered":"http:\/\/sqlity.net\/en\/?p=626"},"modified":"2014-11-13T14:00:06","modified_gmt":"2014-11-13T19:00:06","slug":"selecting-the-entire-database-as-xml-string-2","status":"publish","type":"post","link":"https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/","title":{"rendered":"Selecting the entire Database as XML String &#8211; 2"},"content":{"rendered":"<div>\n<p>\nAbout two weeks ago I wrote about <a href=\"http:\/\/sqlity.net\/en\/577\/selecting-the-entire-database-as-xml-string\/\">how to get the content of the entire database into an XML document<\/a>. Today <a href=\"http:\/\/sqlity.net\/en\/577\/selecting-the-entire-database-as-xml-string\/#comment-18\" title=\"Daniel's comment\">Daniel commented<\/a>, that he would like the XML to be in a compacter format. In this post I am going to explain how to get there.\n<\/p>\n<p>\nWhile WordPress&trade; conveniently ate the example XML Daniel tried to post, I will assume for this article that he was going for this format:\n<\/p>\n<div>\n[xml]\n&lt;tables&gt;<br \/>\n  &lt;table name=&quot;[dbo].[T1366]&quot;&gt;<br \/>\n    &lt;row id=&quot;1&quot; c1=&quot;1366&quot; c2=&quot;2732&quot; c3=&quot;4098&quot; c4=&quot;5464&quot; c5=&quot;6830&quot; c6=&quot;8196&quot; \/&gt;<br \/>\n    &lt;row id=&quot;2&quot; c1=&quot;1366&quot; c2=&quot;2732&quot; c3=&quot;4098&quot; c4=&quot;5464&quot; c5=&quot;6830&quot; c6=&quot;8196&quot; \/&gt;<br \/>\n  &lt;\/table&gt;<br \/>\n  &lt;table name=&quot;[dbo].[T127]&quot;&gt;<br \/>\n    &lt;row id=&quot;1&quot; c1=&quot;127&quot; c2=&quot;254&quot; c3=&quot;381&quot; c4=&quot;508&quot; c5=&quot;635&quot; c6=&quot;762&quot; c7=&quot;889&quot; \/&gt;<br \/>\n    &lt;row id=&quot;2&quot; c1=&quot;127&quot; c2=&quot;254&quot; c3=&quot;381&quot; c4=&quot;508&quot; c5=&quot;635&quot; c6=&quot;762&quot; c7=&quot;889&quot; \/&gt;<br \/>\n  &lt;\/table&gt;<br \/>\n&lt;\/tables&gt;<br \/>\n[\/xml]\n<\/div>\n<p>\nInstead of all column values being sub-nodes of their &lt;row&gt; nodes they are now attributes of an empty &lt;row&gt; node. Also the &lt;data&gt; node between &lt;table&gt; and &lt;row&gt; is now missing, as it was kind of superfluous. And while I was changing the code anyway, I went ahead and added the previously missing root node as &lt;tables&gt;.\n<\/p>\n<p>\nSo how did I get there?\n<\/p>\n<p>\nFirst let us look at the missing root node, which turns out to be the simplest of all the changes. When you select rows for a table specifying the FOR XML PATH('NodeName') directive, every row is going to be represented as a node with the passed in name. Those nodes are just hanging together without an enclosing root node. To make the output a valid XML document you can just specify the ROOT clause next to the PATH clause like this:\n<\/p>\n<div>\n[sql]\n  SELECT *<br \/>\n    FROM dbo.Table<br \/>\n  FOR XML PATH('rowNodeName'),ROOT('rootNodeName'),TYPE<br \/>\n[\/sql]\n<\/div>\n<p>\nThe TYPE directive tells SQL Server to return the XML as a value with the XML type. If you leave it out the XML gets returned as a string, which can create problems if you want to continue to work with it in T-SQL.\n<\/p>\n<p>\nThe next step was, to get rid of the &lt;data&gt; node. When you specify an XML value in a select statement that is in turn using FOR XML PATH, that value is wrapped in a node with the value's column name. The generated SQL in my original solution looked like this:\n<\/p>\n<div>\n[sql]\nSELECT * FROM(<br \/>\nSELECT '[dbo].[t1]' [@name],(SELECT * FROM dbo.t1 FOR XML PATH('row'),TYPE) data<br \/>\nUNION ALL<br \/>\nSELECT '[dbo].[t2]' [@name],(SELECT * FROM dbo.t2 FOR XML PATH('row'),TYPE) data<br \/>\n)X FOR XML PATH('table'),TYPE;<br \/>\n[\/sql]\n<\/div>\n<p>\nThe data column in the UNION ALL query contains XML values, so the outer SELECT * ... FOR XML PATH('table') is going to wrap each one into a &lt;data&gt; node like this:\n<\/p>\n<div>\n[xml]\n&lt;table name=&quot;[dbo].[t1]&quot;&gt;<br \/>\n  &lt;data&gt;<br \/>\n    &lt;row&gt;<br \/>\n      &lt;id&gt;1&lt;\/id&gt;<br \/>\n      &lt;c1&gt;1&lt;\/c1&gt;<br \/>\n    &lt;\/row&gt;<br \/>\n    &lt;row&gt;<br \/>\n      &lt;id&gt;2&lt;\/id&gt;<br \/>\n      &lt;c1&gt;1&lt;\/c1&gt;<br \/>\n    &lt;\/row&gt;<br \/>\n  &lt;\/data&gt;<br \/>\n&lt;\/table&gt;<br \/>\n&lt;table name=&quot;[dbo].[t2]&quot;&gt;<br \/>\n  &lt;data&gt;<br \/>\n    &lt;row&gt;<br \/>\n      &lt;id&gt;1&lt;\/id&gt;<br \/>\n      &lt;c1&gt;2&lt;\/c1&gt;<br \/>\n      &lt;c2&gt;4&lt;\/c2&gt;<br \/>\n    &lt;\/row&gt;<br \/>\n    &lt;row&gt;<br \/>\n      &lt;id&gt;2&lt;\/id&gt;<br \/>\n      &lt;c1&gt;2&lt;\/c1&gt;<br \/>\n      &lt;c2&gt;4&lt;\/c2&gt;<br \/>\n    &lt;\/row&gt;<br \/>\n  &lt;\/data&gt;<br \/>\n&lt;\/table&gt;<br \/>\n[\/xml]\n<\/div>\n<p>\nTo remove the additional node we can use the fact that SQL Sever will inline the value of a column that does not have a name. So we need to select the data column without specifying its name. To do that we will use a trick:\n<\/p>\n<div>\n[sql]\nSELECT [@name],(SELECT data) FROM(<br \/>\nSELECT '[dbo].[t1]' [@name],(SELECT * FROM dbo.t1 FOR XML PATH('row'),TYPE) data<br \/>\nUNION ALL<br \/>\nSELECT '[dbo].[t2]' [@name],(SELECT * FROM dbo.t2 FOR XML PATH('row'),TYPE) data<br \/>\n)X FOR XML PATH('table'),TYPE;<br \/>\n[\/sql]\n<\/div>\n<p>\nBy wrapping the data column in its own SELECT it loses its name property for the outer SELECT statement. The output it generates now looks like this:\n<\/p>\n<div>\n[sql]\n&lt;table name=&quot;[dbo].[t1]&quot;&gt;<br \/>\n  &lt;row&gt;<br \/>\n    &lt;id&gt;1&lt;\/id&gt;<br \/>\n    &lt;c1&gt;1&lt;\/c1&gt;<br \/>\n  &lt;\/row&gt;<br \/>\n  &lt;row&gt;<br \/>\n    &lt;id&gt;2&lt;\/id&gt;<br \/>\n    &lt;c1&gt;1&lt;\/c1&gt;<br \/>\n  &lt;\/row&gt;<br \/>\n&lt;\/table&gt;<br \/>\n&lt;table name=&quot;[dbo].[t2]&quot;&gt;<br \/>\n  &lt;row&gt;<br \/>\n    &lt;id&gt;1&lt;\/id&gt;<br \/>\n    &lt;c1&gt;2&lt;\/c1&gt;<br \/>\n    &lt;c2&gt;4&lt;\/c2&gt;<br \/>\n  &lt;\/row&gt;<br \/>\n  &lt;row&gt;<br \/>\n    &lt;id&gt;2&lt;\/id&gt;<br \/>\n    &lt;c1&gt;2&lt;\/c1&gt;<br \/>\n    &lt;c2&gt;4&lt;\/c2&gt;<br \/>\n  &lt;\/row&gt;<br \/>\n&lt;\/table&gt;<br \/>\n[\/sql]\n<\/div>\n<p>\n The last thing we need to accomplish is to make the column values attributes of each &lt;row&gt; node instead of sub-nodes. If you specify a column name with a leading \"@\" sign, FOR XML PATH will make that value an attribute with that name (without the \"@\"):\n<\/p>\n<div>\n[sql]\nSELECT id AS [@id] FROM dbo.t1 FOR XML PATH('row'),TYPE;<br \/>\n[\/sql]\n<div>\n<p>\nThe output of above statement looks like this:<\/p>\n<div>\n[xml]\n&lt;row id=&quot;1&quot; \/&gt;<br \/>\n&lt;row id=&quot;2&quot; \/&gt;<br \/>\n[\/xml]\n<\/div>\n<p>\nSo instead of a SELECT * FROM for each table, we need to list all columns in the format shown above. To get this specially formatted column list we are going to use <a href=\"http:\/\/sqlity.net\/en\/400\/t-sql-tuesday-22-data-presentation\/\">XML concatenation<\/a> one more time:\n<\/p>\n<div>\n[sql]\nSELECT STUFF((SELECT ','+QUOTENAME(name)+' AS '+QUOTENAME('@'+name)<br \/>\n                              FROM sys.columns c<br \/>\n                             WHERE c.object_id = OBJECT_ID('dbo.t2')<br \/>\n                             ORDER BY column_id<br \/>\n                            FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'),1,1,'');<br \/>\n[\/sql]\n<\/div>\n<p>\nThis produces the desired list:<\/p>\n<pre>[id] AS [@id],[c1] AS [@c1],[c2] AS [@c2]<\/pre>\n<\/p>\n<p>\nWith that we have all the parts collected to create the new \"compact\" solution. The last step is to put it all together:\n<\/p>\n<div>\n[sql]\nDECLARE @cmd NVARCHAR(MAX) ;<br \/>\nSET @cmd = 'SELECT [@name],(SELECT data) FROM('<br \/>\n    + STUFF(<br \/>\n(SELECT ' UNION ALL SELECT ''' + QUOTENAME(OBJECT_SCHEMA_NAME(object_id))<br \/>\n        + '.' + QUOTENAME(t.name) + ''' [@name],' + '(SELECT '+c.ColList+' FROM '<br \/>\n        + QUOTENAME(OBJECT_SCHEMA_NAME(object_id)) + '.' + QUOTENAME(t.name)<br \/>\n        + ' FOR XML PATH(''row''),TYPE) data'<br \/>\n FROM   sys.tables t<br \/>\n CROSS APPLY (SELECT STUFF((SELECT ','+QUOTENAME(name)+' AS '+QUOTENAME('@'+name)<br \/>\n                              FROM sys.columns c<br \/>\n                             WHERE c.object_id = t.object_id<br \/>\n                             ORDER BY column_id<br \/>\n                            FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'),1,1,'')<br \/>\n             )c(ColList)<br \/>\n    FOR     XML PATH('') ,<br \/>\n                TYPE).value('.', 'NVARCHAR(MAX)'), 1, 11, '')<br \/>\n    + ')X FOR XML PATH(''table''),ROOT(''tables''),TYPE;' ;<\/p>\n<p>EXEC(@cmd) ;<br \/>\n[\/sql]\n<\/p><\/div>\n<p>\nThis produces the desired output that was shown all the way at the beginning of this article. The size of the resulting XML document for my example database went from about 1.4 MB for the original solution to now about 0.5 MB &ndash; a significant improvement.\n<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>About two weeks ago I wrote about how to get the content of the entire database into an XML document. Today Daniel commented, that he would like the XML to be in a compacter format. In this post I am <a href=\"https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/\">[more&#8230;]<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[5,16],"tags":[],"class_list":["post-626","post","type-post","status-publish","format-standard","hentry","category-general","category-xml"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Selecting the entire Database as XML String - 2 - sqlity.net<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Selecting the entire Database as XML String - 2 - sqlity.net\" \/>\n<meta property=\"og:description\" content=\"About two weeks ago I wrote about how to get the content of the entire database into an XML document. Today Daniel commented, that he would like the XML to be in a compacter format. In this post I am [more...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/\" \/>\n<meta property=\"og:site_name\" content=\"sqlity.net\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/sqlity.net\" \/>\n<meta property=\"article:published_time\" content=\"2012-02-01T17:11:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-11-13T19:00:06+00:00\" \/>\n<meta name=\"author\" content=\"Sebastian Meine\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@sqlity\" \/>\n<meta name=\"twitter:site\" content=\"@sqlity\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sebastian Meine\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/626\\\/selecting-the-entire-database-as-xml-string-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/626\\\/selecting-the-entire-database-as-xml-string-2\\\/\"},\"author\":{\"name\":\"Sebastian Meine\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#\\\/schema\\\/person\\\/bcffd8c572bc2f1bd10fdba80135e53c\"},\"headline\":\"Selecting the entire Database as XML String &#8211; 2\",\"datePublished\":\"2012-02-01T17:11:49+00:00\",\"dateModified\":\"2014-11-13T19:00:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/626\\\/selecting-the-entire-database-as-xml-string-2\\\/\"},\"wordCount\":1275,\"commentCount\":4,\"articleSection\":[\"General\",\"XML\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/sqlity.net\\\/en\\\/626\\\/selecting-the-entire-database-as-xml-string-2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/626\\\/selecting-the-entire-database-as-xml-string-2\\\/\",\"url\":\"https:\\\/\\\/sqlity.net\\\/en\\\/626\\\/selecting-the-entire-database-as-xml-string-2\\\/\",\"name\":\"Selecting the entire Database as XML String - 2 - sqlity.net\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#website\"},\"datePublished\":\"2012-02-01T17:11:49+00:00\",\"dateModified\":\"2014-11-13T19:00:06+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#\\\/schema\\\/person\\\/bcffd8c572bc2f1bd10fdba80135e53c\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/626\\\/selecting-the-entire-database-as-xml-string-2\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sqlity.net\\\/en\\\/626\\\/selecting-the-entire-database-as-xml-string-2\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/626\\\/selecting-the-entire-database-as-xml-string-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sqlity.net\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Selecting the entire Database as XML String &#8211; 2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/sqlity.net\\\/en\\\/\",\"name\":\"sqlity.net\",\"description\":\"Quality for SQL\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sqlity.net\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#\\\/schema\\\/person\\\/bcffd8c572bc2f1bd10fdba80135e53c\",\"name\":\"Sebastian Meine\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g\",\"caption\":\"Sebastian Meine\"},\"sameAs\":[\"http:\\\/\\\/sqlity.net\",\"https:\\\/\\\/x.com\\\/sqlity\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Selecting the entire Database as XML String - 2 - sqlity.net","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/","og_locale":"en_US","og_type":"article","og_title":"Selecting the entire Database as XML String - 2 - sqlity.net","og_description":"About two weeks ago I wrote about how to get the content of the entire database into an XML document. Today Daniel commented, that he would like the XML to be in a compacter format. In this post I am [more...]","og_url":"https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/","og_site_name":"sqlity.net","article_publisher":"https:\/\/www.facebook.com\/sqlity.net","article_published_time":"2012-02-01T17:11:49+00:00","article_modified_time":"2014-11-13T19:00:06+00:00","author":"Sebastian Meine","twitter_card":"summary_large_image","twitter_creator":"@sqlity","twitter_site":"@sqlity","twitter_misc":{"Written by":"Sebastian Meine","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/#article","isPartOf":{"@id":"https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/"},"author":{"name":"Sebastian Meine","@id":"https:\/\/sqlity.net\/en\/#\/schema\/person\/bcffd8c572bc2f1bd10fdba80135e53c"},"headline":"Selecting the entire Database as XML String &#8211; 2","datePublished":"2012-02-01T17:11:49+00:00","dateModified":"2014-11-13T19:00:06+00:00","mainEntityOfPage":{"@id":"https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/"},"wordCount":1275,"commentCount":4,"articleSection":["General","XML"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/","url":"https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/","name":"Selecting the entire Database as XML String - 2 - sqlity.net","isPartOf":{"@id":"https:\/\/sqlity.net\/en\/#website"},"datePublished":"2012-02-01T17:11:49+00:00","dateModified":"2014-11-13T19:00:06+00:00","author":{"@id":"https:\/\/sqlity.net\/en\/#\/schema\/person\/bcffd8c572bc2f1bd10fdba80135e53c"},"breadcrumb":{"@id":"https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/sqlity.net\/en\/626\/selecting-the-entire-database-as-xml-string-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sqlity.net\/en\/"},{"@type":"ListItem","position":2,"name":"Selecting the entire Database as XML String &#8211; 2"}]},{"@type":"WebSite","@id":"https:\/\/sqlity.net\/en\/#website","url":"https:\/\/sqlity.net\/en\/","name":"sqlity.net","description":"Quality for SQL","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sqlity.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/sqlity.net\/en\/#\/schema\/person\/bcffd8c572bc2f1bd10fdba80135e53c","name":"Sebastian Meine","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g","caption":"Sebastian Meine"},"sameAs":["http:\/\/sqlity.net","https:\/\/x.com\/sqlity"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2wXuw-a6","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/posts\/626","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/comments?post=626"}],"version-history":[{"count":0,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/posts\/626\/revisions"}],"wp:attachment":[{"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/media?parent=626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/categories?post=626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/tags?post=626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}