{"id":265,"date":"2019-01-12T18:00:59","date_gmt":"2019-01-12T18:00:59","guid":{"rendered":"https:\/\/datablog.roman-halliday.com\/?p=265"},"modified":"2019-01-08T21:10:36","modified_gmt":"2019-01-08T21:10:36","slug":"null-when-a-value-is-neither-in-or-not-in-a-list","status":"publish","type":"post","link":"https:\/\/datablog.roman-halliday.com\/index.php\/2019\/01\/12\/null-when-a-value-is-neither-in-or-not-in-a-list\/","title":{"rendered":"NULL: When a value is neither IN or NOT IN a list."},"content":{"rendered":"\r\n<p>NULL is always a challenge for equality, I&#8217;ve written about it before. I recently produced some samples for training\/explanation of NULL when it comes to IN and NOT IN, and thought I&#8217;d include it here.<\/p>\r\n\r\n\r\n\r\n<p>In the past I have looked at NULL from the perspectives of:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><a href=\"https:\/\/datablog.roman-halliday.com\/index.php\/2018\/08\/11\/managing-update-differences-null-and-not-null\/\">Managing update differences NULL and NOT NULL<\/a><\/li>\r\n<li><a href=\"https:\/\/datablog.roman-halliday.com\/index.php\/2018\/12\/15\/warning-null-value-is-eliminated-by-an-aggregate-or-other-set-operation\/\">Warning NULL value is eliminated by an aggregate or other set operation<\/a><\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h1>NULL and Equality<\/h1>\r\n<p>The key thing to remember is that NULL is neither equal to, or not equal to NULL. As shown by the below SQL:<\/p>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">--------------------------------------------------------------------------------\r\n-- Classic equality (without NULL)\r\n--------------------------------------------------------------------------------\r\nSELECT 1 AS output_craeted\r\n WHERE 1 = 1\r\n;\r\n\r\n--------------------------------------------------------------------------------\r\n-- NULL is neither equal to, nor NOT equal to NULL\r\n-- It IS either NULL or NOT NULL\r\n--------------------------------------------------------------------------------\r\nSELECT 2 AS output_craeted\r\n WHERE NULL = NULL\r\n;\r\n\r\nSELECT 2 AS output_craeted\r\n WHERE NULL &lt;&gt; NULL\r\n;\r\n\r\nSELECT 3 AS output_craeted\r\n WHERE NULL IS NOT NULL\r\n;\r\n\r\nSELECT 4 AS output_craeted\r\n WHERE NULL IS NULL\r\n;<\/pre>\r\n<h1>Example of IN and NOT IN<\/h1>\r\n<p>When using IN and NOT IN, the SQL underneath is creating a collection of equality tests, all of which NULL will fail.<\/p>\r\n<p>Below are some working examples of using NULL with IN and NOT IN lists, I&#8217;m going to work with the same small set of sample data throughout the examples here.<\/p>\r\n<h2>Create sample data<\/h2>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">--------------------------------------------------------------------------------\r\n-- Create source data\r\n--------------------------------------------------------------------------------\r\nCREATE TABLE #ValueList\r\n(\r\n    ID     INT IDENTITY(1,1) NOT NULL PRIMARY KEY,\r\n    val_1  VARCHAR(10),\r\n    metric INT\r\n);\r\n\r\n\r\nINSERT\r\n  INTO #ValueList\r\n      (val_1,metric)\r\nVALUES('a',  10),\r\n      ('b',  20),\r\n      ('c',  30),\r\n      (NULL, 40)\r\n;\r\n\r\n-- View our sample data\r\nSELECT *\r\n  FROM #ValueList\r\n;\r\n<\/pre>\r\n<p>Try using IN and NOT IN<\/p>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">--------------------------------------------------------------------------------\r\n-- Hard coded list: NOT IN\r\n--------------------------------------------------------------------------------\r\nSELECT *\r\n  FROM #ValueList\r\n WHERE val_1 NOT IN ('a', 'b') -- Skips NULL\r\n;\r\n\r\nSELECT *\r\n  FROM #ValueList\r\n WHERE val_1 NOT IN ('a', 'b', NULL) -- Returns no results\r\n;\r\n\r\n--------------------------------------------------------------------------------\r\n-- Hard coded list: IN\r\n--------------------------------------------------------------------------------\r\n\r\nSELECT *\r\n  FROM #ValueList\r\n WHERE val_1 IN ('a', 'b') -- Skips NULL (as expected)\r\n;\r\n\r\nSELECT *\r\n  FROM #ValueList\r\n WHERE val_1 IN ('a', 'b', NULL) -- Skips NULL (not as expected)\r\n;\r\n<\/pre>\r\n<p>This can be seen in action over at\u00a0<a href=\"https:\/\/rextester.com\/QCSM37103\">rextester.com<\/a><\/p>\r\n<h1>Solutions<\/h1>\r\n<p>The aim is to be consistent on treating NULL as a distinct value, which is either IN or NOT IN the given list. It is key to note that in neither solution can NULL be in the list.<\/p>\r\n<p>The solutions can also be seen in action over at\u00a0rextester.com<\/p>\r\n<h2>COALESCE<\/h2>\r\n<p>If it&#8217;s just a quick query, then the simplest solution is to use COALESCE, this will allow NULL values to be set to something specifically IN or NOT IN the given list to control behaviour:<\/p>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-highlight=\"3\">SELECT *\r\n  FROM #ValueList\r\n WHERE COALESCE(val_1, 'Z') NOT IN ('a', 'b')\r\n;<\/pre>\r\n<p><strong>Note<\/strong>: To have the effect of adding NULL to the list, set the replacement value to something in the list.<\/p>\r\n<h2>Specific AND\/OR condition for NULL<\/h2>\r\n<p>Similar to the COALESCE in its&#8217; simplicity is being explicit in handling the NULL values using IS NULL and IS NOT NULL. This does extend the amount of code, but it&#8217;s also very clear on what the extra logic accomplishes. I&#8217;d recommend this for a small\/medium term solution.<\/p>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-highlight=\"3-4\">SELECT *\r\n  FROM #ValueList\r\n WHERE(   val_1 NOT IN ('a', 'b')\r\n       OR val_1 IS NULL\r\n      )\r\n;<\/pre>\r\n<p><strong>Note<\/strong>: To have the effect of adding NULL to the list, toggle the second condition as required.<\/p>\r\n<h2>Lookup List<\/h2>\r\n<p>Storing the values in a table is the ideal long term solution. It allows for the values\/conditions to be reused in multiple places, and any additions can be applied with just one update. It also has consistent behaviour with NULLs:<\/p>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">--------------------------------------------------------------------------------\r\n-- Create a lookup list\r\n--------------------------------------------------------------------------------\r\nCREATE TABLE #LookupList\r\n(\r\n    val_1 VARCHAR(10) NOT NULL PRIMARY KEY\r\n);\r\n\r\nINSERT\r\n  INTO #LookupList\r\n      (val_1)\r\nVALUES('a'),\r\n      ('b')\r\n;<\/pre>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">--------------------------------------------------------------------------------\r\n-- Filter using WHERE NOT EXISTS\r\n--------------------------------------------------------------------------------\r\nSELECT *\r\n  FROM #ValueList vl\r\n WHERE NOT EXISTS\r\n      (SELECT *\r\n         FROM #LookupList ll\r\n        WHERE ll.val_1 = vl.val_1\r\n      )\r\n;\r\n\r\n--------------------------------------------------------------------------------\r\n-- Filter using WHERE EXISTS\r\n--------------------------------------------------------------------------------\r\nSELECT *\r\n  FROM #ValueList vl\r\n WHERE EXISTS\r\n      (SELECT *\r\n         FROM #LookupList ll\r\n        WHERE ll.val_1 = vl.val_1\r\n      )\r\n;<\/pre>\r\n<p><strong>Note<\/strong>: To have the effect of adding NULL to the list, it will need to be handled in a COALESCE or Specific condition for NULL.<\/p>\r\n\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>NULL is always a challenge for equality, I&#8217;ve written about it before. I recently produced some samples for training\/explanation of NULL when it comes to IN and NOT IN, and thought I&#8217;d include it here.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,4],"tags":[17],"class_list":["post-265","post","type-post","status-publish","format-standard","hentry","category-databases","category-sql-server","tag-null"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>NULL: When a value is neither IN or NOT IN a list. - Rows Across The Lake<\/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:\/\/datablog.roman-halliday.com\/index.php\/2019\/01\/12\/null-when-a-value-is-neither-in-or-not-in-a-list\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NULL: When a value is neither IN or NOT IN a list. - Rows Across The Lake\" \/>\n<meta property=\"og:description\" content=\"NULL is always a challenge for equality, I&#039;ve written about it before. I recently produced some samples for training\/explanation of NULL when it comes to IN and NOT IN, and thought I&#039;d include it here.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/datablog.roman-halliday.com\/index.php\/2019\/01\/12\/null-when-a-value-is-neither-in-or-not-in-a-list\/\" \/>\n<meta property=\"og:site_name\" content=\"Rows Across The Lake\" \/>\n<meta property=\"article:published_time\" content=\"2019-01-12T18:00:59+00:00\" \/>\n<meta name=\"author\" content=\"david\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@d_roman_h\" \/>\n<meta name=\"twitter:site\" content=\"@d_roman_h\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"david\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2019\\\/01\\\/12\\\/null-when-a-value-is-neither-in-or-not-in-a-list\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2019\\\/01\\\/12\\\/null-when-a-value-is-neither-in-or-not-in-a-list\\\/\"},\"author\":{\"name\":\"david\",\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/#\\\/schema\\\/person\\\/575f96d2590c3085923ff9e1b565748b\"},\"headline\":\"NULL: When a value is neither IN or NOT IN a list.\",\"datePublished\":\"2019-01-12T18:00:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2019\\\/01\\\/12\\\/null-when-a-value-is-neither-in-or-not-in-a-list\\\/\"},\"wordCount\":435,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/#\\\/schema\\\/person\\\/575f96d2590c3085923ff9e1b565748b\"},\"keywords\":[\"NULL\"],\"articleSection\":[\"Databases\",\"SQL Server\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2019\\\/01\\\/12\\\/null-when-a-value-is-neither-in-or-not-in-a-list\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2019\\\/01\\\/12\\\/null-when-a-value-is-neither-in-or-not-in-a-list\\\/\",\"url\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2019\\\/01\\\/12\\\/null-when-a-value-is-neither-in-or-not-in-a-list\\\/\",\"name\":\"NULL: When a value is neither IN or NOT IN a list. - Rows Across The Lake\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/#website\"},\"datePublished\":\"2019-01-12T18:00:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2019\\\/01\\\/12\\\/null-when-a-value-is-neither-in-or-not-in-a-list\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2019\\\/01\\\/12\\\/null-when-a-value-is-neither-in-or-not-in-a-list\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/index.php\\\/2019\\\/01\\\/12\\\/null-when-a-value-is-neither-in-or-not-in-a-list\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"NULL: When a value is neither IN or NOT IN a list.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/#website\",\"url\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/\",\"name\":\"Rows Across The Lake\",\"description\":\"Data &amp; Databases\",\"publisher\":{\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/#\\\/schema\\\/person\\\/575f96d2590c3085923ff9e1b565748b\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/datablog.roman-halliday.com\\\/#\\\/schema\\\/person\\\/575f96d2590c3085923ff9e1b565748b\",\"name\":\"david\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g\",\"caption\":\"david\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"NULL: When a value is neither IN or NOT IN a list. - Rows Across The Lake","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:\/\/datablog.roman-halliday.com\/index.php\/2019\/01\/12\/null-when-a-value-is-neither-in-or-not-in-a-list\/","og_locale":"en_GB","og_type":"article","og_title":"NULL: When a value is neither IN or NOT IN a list. - Rows Across The Lake","og_description":"NULL is always a challenge for equality, I've written about it before. I recently produced some samples for training\/explanation of NULL when it comes to IN and NOT IN, and thought I'd include it here.","og_url":"https:\/\/datablog.roman-halliday.com\/index.php\/2019\/01\/12\/null-when-a-value-is-neither-in-or-not-in-a-list\/","og_site_name":"Rows Across The Lake","article_published_time":"2019-01-12T18:00:59+00:00","author":"david","twitter_card":"summary_large_image","twitter_creator":"@d_roman_h","twitter_site":"@d_roman_h","twitter_misc":{"Written by":"david","Estimated reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2019\/01\/12\/null-when-a-value-is-neither-in-or-not-in-a-list\/#article","isPartOf":{"@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2019\/01\/12\/null-when-a-value-is-neither-in-or-not-in-a-list\/"},"author":{"name":"david","@id":"https:\/\/datablog.roman-halliday.com\/#\/schema\/person\/575f96d2590c3085923ff9e1b565748b"},"headline":"NULL: When a value is neither IN or NOT IN a list.","datePublished":"2019-01-12T18:00:59+00:00","mainEntityOfPage":{"@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2019\/01\/12\/null-when-a-value-is-neither-in-or-not-in-a-list\/"},"wordCount":435,"commentCount":0,"publisher":{"@id":"https:\/\/datablog.roman-halliday.com\/#\/schema\/person\/575f96d2590c3085923ff9e1b565748b"},"keywords":["NULL"],"articleSection":["Databases","SQL Server"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/datablog.roman-halliday.com\/index.php\/2019\/01\/12\/null-when-a-value-is-neither-in-or-not-in-a-list\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2019\/01\/12\/null-when-a-value-is-neither-in-or-not-in-a-list\/","url":"https:\/\/datablog.roman-halliday.com\/index.php\/2019\/01\/12\/null-when-a-value-is-neither-in-or-not-in-a-list\/","name":"NULL: When a value is neither IN or NOT IN a list. - Rows Across The Lake","isPartOf":{"@id":"https:\/\/datablog.roman-halliday.com\/#website"},"datePublished":"2019-01-12T18:00:59+00:00","breadcrumb":{"@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2019\/01\/12\/null-when-a-value-is-neither-in-or-not-in-a-list\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/datablog.roman-halliday.com\/index.php\/2019\/01\/12\/null-when-a-value-is-neither-in-or-not-in-a-list\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/datablog.roman-halliday.com\/index.php\/2019\/01\/12\/null-when-a-value-is-neither-in-or-not-in-a-list\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/datablog.roman-halliday.com\/"},{"@type":"ListItem","position":2,"name":"NULL: When a value is neither IN or NOT IN a list."}]},{"@type":"WebSite","@id":"https:\/\/datablog.roman-halliday.com\/#website","url":"https:\/\/datablog.roman-halliday.com\/","name":"Rows Across The Lake","description":"Data &amp; Databases","publisher":{"@id":"https:\/\/datablog.roman-halliday.com\/#\/schema\/person\/575f96d2590c3085923ff9e1b565748b"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/datablog.roman-halliday.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/datablog.roman-halliday.com\/#\/schema\/person\/575f96d2590c3085923ff9e1b565748b","name":"david","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g","caption":"david"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/acddbc676a1d5c73795edcf0627ee39e5aa947da9033b58373e03d93122cb3b7?s=96&d=mm&r=g"}}]}},"_links":{"self":[{"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/posts\/265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/comments?post=265"}],"version-history":[{"count":3,"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/posts\/265\/revisions"}],"predecessor-version":[{"id":268,"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/posts\/265\/revisions\/268"}],"wp:attachment":[{"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/media?parent=265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/categories?post=265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/datablog.roman-halliday.com\/index.php\/wp-json\/wp\/v2\/tags?post=265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}