{"id":1758,"date":"2010-01-08T13:54:18","date_gmt":"2010-01-08T18:54:18","guid":{"rendered":"http:\/\/3.209.169.194\/blogs\/jonathan\/?p=1758"},"modified":"2013-04-11T13:56:20","modified_gmt":"2013-04-11T17:56:20","slug":"finding-implicit-column-conversions-in-the-plan-cache","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/finding-implicit-column-conversions-in-the-plan-cache\/","title":{"rendered":"Finding Implicit Column Conversions in the Plan Cache"},"content":{"rendered":"\n<p>Last year Tibor Karaszi posted a blog post titled <a href=\"http:\/\/sqlblog.com\/blogs\/tibor_karaszi\/archive\/2009\/04\/28\/match-those-types.aspx\" target=\"_blank\">Match Those Types<\/a> that talked about implicit data type conversions associated with mismatched data types between filter criteria and table column data types.&#160; His blog post does a good job of covering the topic so I am not going to rehash it out here.<\/p>\n<p>However, at the time I was working on a number of scripts that query information from the plan cache in SQL Server 2005 and 2008 for a presentation I had in mind but never got around to actually doing.&#160; I mentioned this in the comments on the blog post and yesterday I was contacted by email asking if I would share the script.&#160; I dug it out, and it wasn\u2019t exactly complete, but I decided to send what I had to the requestor any way.&#160; <\/p>\n<p>Being the person I am, I was somewhat bothered by the half completed script so I put a little time (ok, so in reality was a lot more than I originally planned to) into finishing the script off to where I originally wanted it to be.<\/p>\n<blockquote><p><code style=\"font-size:12px;\"><span style=\"color:blue;\">SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED       <\/p>\n<p>DECLARE <\/span><span style=\"color:#434343;\">@dbname <\/span><span style=\"color:blue;\">SYSNAME       <br \/>SET <\/span><span style=\"color:#434343;\">@dbname <\/span><span style=\"color:blue;\">= <\/span><span style=\"color:magenta;\">QUOTENAME<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:magenta;\">DB_NAME<\/span><span style=\"color:gray;\">());       <\/p>\n<p><\/span><span style=\"color:blue;\">WITH <\/span><span style=\"color:black;\">XMLNAMESPACES        <br \/>&#160;&#160; <\/span><span style=\"color:gray;\">(<\/span><span style=\"color:blue;\">DEFAULT <\/span><span style=\"color:red;\">'http:\/\/schemas.microsoft.com\/sqlserver\/2004\/07\/showplan'<\/span><span style=\"color:gray;\">)        <br \/><\/span><span style=\"color:blue;\">SELECT        <br \/>&#160;&#160; <\/span><span style=\"color:black;\">stmt.value<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:red;\">'(@StatementText)[1]'<\/span><span style=\"color:gray;\">, <\/span><span style=\"color:red;\">'varchar(max)'<\/span><span style=\"color:gray;\">),       <br \/>&#160;&#160; <\/span><span style=\"color:black;\">t.value<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:red;\">'(ScalarOperator\/Identifier\/ColumnReference\/@Schema)[1]'<\/span><span style=\"color:gray;\">, <\/span><span style=\"color:red;\">'varchar(128)'<\/span><span style=\"color:gray;\">),       <br \/>&#160;&#160; <\/span><span style=\"color:black;\">t.value<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:red;\">'(ScalarOperator\/Identifier\/ColumnReference\/@Table)[1]'<\/span><span style=\"color:gray;\">, <\/span><span style=\"color:red;\">'varchar(128)'<\/span><span style=\"color:gray;\">),       <br \/>&#160;&#160; <\/span><span style=\"color:black;\">t.value<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:red;\">'(ScalarOperator\/Identifier\/ColumnReference\/@Column)[1]'<\/span><span style=\"color:gray;\">, <\/span><span style=\"color:red;\">'varchar(128)'<\/span><span style=\"color:gray;\">),       <br \/>&#160;&#160; <\/span><span style=\"color:black;\">ic.DATA_TYPE <\/span><span style=\"color:blue;\">AS <\/span><span style=\"color:black;\">ConvertFrom<\/span><span style=\"color:gray;\">,       <br \/>&#160;&#160; <\/span><span style=\"color:black;\">ic.<\/span><span style=\"color:blue;\">CHAR<\/span><span style=\"color:black;\">ACTER_MAXIMUM_LENGTH <\/span><span style=\"color:blue;\">AS <\/span><span style=\"color:black;\">ConvertFromLength<\/span><span style=\"color:gray;\">,       <br \/>&#160;&#160; <\/span><span style=\"color:black;\">t.value<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:red;\">'(@DataType)[1]'<\/span><span style=\"color:gray;\">, <\/span><span style=\"color:red;\">'varchar(128)'<\/span><span style=\"color:gray;\">) <\/span><span style=\"color:blue;\">AS <\/span><span style=\"color:black;\">ConvertTo<\/span><span style=\"color:gray;\">,       <br \/>&#160;&#160; <\/span><span style=\"color:black;\">t.value<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:red;\">'(@Length)[1]'<\/span><span style=\"color:gray;\">, <\/span><span style=\"color:red;\">'int'<\/span><span style=\"color:gray;\">) <\/span><span style=\"color:blue;\">AS <\/span><span style=\"color:black;\">ConvertToLength<\/span><span style=\"color:gray;\">,       <br \/>&#160;&#160; <\/span><span style=\"color:black;\">query_plan       <br \/><\/span><span style=\"color:blue;\">FROM <\/span><span style=\"color:black;\">sys.dm_exec_cached_plans <\/span><span style=\"color:blue;\">AS <\/span><span style=\"color:black;\">cp       <br \/><\/span><span style=\"color:gray;\">CROSS <\/span><span style=\"color:black;\">APPLY sys.dm_exec_query_plan<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:black;\">plan_handle<\/span><span style=\"color:gray;\">) <\/span><span style=\"color:blue;\">AS <\/span><span style=\"color:black;\">qp       <br \/><\/span><span style=\"color:gray;\">CROSS <\/span><span style=\"color:black;\">APPLY query_plan.nodes<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:red;\">'\/ShowPlanXML\/BatchSequence\/Batch\/Statements\/StmtSimple'<\/span><span style=\"color:gray;\">) <\/span><span style=\"color:blue;\">AS <\/span><span style=\"color:black;\">batch<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:black;\">stmt<\/span><span style=\"color:gray;\">)       <br \/>CROSS <\/span><span style=\"color:black;\">APPLY stmt.nodes<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:red;\">'.\/\/Convert[@Implicit=&quot;1&quot;]'<\/span><span style=\"color:gray;\">) <\/span><span style=\"color:blue;\">AS <\/span><span style=\"color:black;\">n<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:black;\">t<\/span><span style=\"color:gray;\">)       <br \/><\/span><span style=\"color:blue;\">JOIN <\/span><span style=\"color:black;\">INFORMATION_SCHEMA.COLUMNS <\/span><span style=\"color:blue;\">AS <\/span><span style=\"color:black;\">ic       <br \/>&#160;&#160; <\/span><span style=\"color:blue;\">ON <\/span><span style=\"color:magenta;\">QUOTENAME<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:black;\">ic.TABLE_SCHEMA<\/span><span style=\"color:gray;\">) <\/span><span style=\"color:blue;\">= <\/span><span style=\"color:black;\">t.value<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:red;\">'(ScalarOperator\/Identifier\/ColumnReference\/@Schema)[1]'<\/span><span style=\"color:gray;\">, <\/span><span style=\"color:red;\">'varchar(128)'<\/span><span style=\"color:gray;\">)       <br \/>&#160;&#160; AND <\/span><span style=\"color:magenta;\">QUOTENAME<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:black;\">ic.TABLE_NAME<\/span><span style=\"color:gray;\">) <\/span><span style=\"color:blue;\">= <\/span><span style=\"color:black;\">t.value<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:red;\">'(ScalarOperator\/Identifier\/ColumnReference\/@Table)[1]'<\/span><span style=\"color:gray;\">, <\/span><span style=\"color:red;\">'varchar(128)'<\/span><span style=\"color:gray;\">)       <br \/>&#160;&#160; AND <\/span><span style=\"color:black;\">ic.COLUMN_NAME <\/span><span style=\"color:blue;\">= <\/span><span style=\"color:black;\">t.value<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:red;\">'(ScalarOperator\/Identifier\/ColumnReference\/@Column)[1]'<\/span><span style=\"color:gray;\">, <\/span><span style=\"color:red;\">'varchar(128)'<\/span><span style=\"color:gray;\">)       <br \/><\/span><span style=\"color:blue;\">WHERE <\/span><span style=\"color:black;\">t.exist<\/span><span style=\"color:gray;\">(<\/span><span style=\"color:red;\">'ScalarOperator\/Identifier\/ColumnReference[@Database=sql:variable(&quot;@dbname&quot;)][@Schema!=&quot;[sys]&quot;]'<\/span><span style=\"color:gray;\">) <\/span><span style=\"color:blue;\">= <\/span><span style=\"color:black;\">1<\/span><\/code> <\/p><\/blockquote>\n<p>This queries the plan cache for query plans from the current database that have an implicit conversion on the column side of the query and returns the statement from the batch that is causing the conversion, the schema, tablename, and columnname being converted, as well as the original and converted datatypes and lengths and finally the entire query plan so that you can see whether it is an adhoc statement causing the conversion or if it is occurring inside of a stored procedure.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last year Tibor Karaszi posted a blog post titled Match Those Types that talked about implicit data type conversions associated with mismatched data types between filter criteria and table column data types.&#160; His blog post does a good job of covering the topic so I am not going to rehash it out here. However, at [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[49,31],"tags":[],"class_list":["post-1758","post","type-post","status-publish","format-standard","hentry","category-performance-tuning","category-plan-cache"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Finding Implicit Column Conversions in the Plan Cache - Jonathan Kehayias<\/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:\/\/www.sqlskills.com\/blogs\/jonathan\/finding-implicit-column-conversions-in-the-plan-cache\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Finding Implicit Column Conversions in the Plan Cache - Jonathan Kehayias\" \/>\n<meta property=\"og:description\" content=\"Last year Tibor Karaszi posted a blog post titled Match Those Types that talked about implicit data type conversions associated with mismatched data types between filter criteria and table column data types.&#160; His blog post does a good job of covering the topic so I am not going to rehash it out here. However, at [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/finding-implicit-column-conversions-in-the-plan-cache\/\" \/>\n<meta property=\"og:site_name\" content=\"Jonathan Kehayias\" \/>\n<meta property=\"article:published_time\" content=\"2010-01-08T18:54:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-04-11T17:56:20+00:00\" \/>\n<meta name=\"author\" content=\"Jonathan Kehayias\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jonathan Kehayias\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/finding-implicit-column-conversions-in-the-plan-cache\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/finding-implicit-column-conversions-in-the-plan-cache\\\/\"},\"author\":{\"name\":\"Jonathan Kehayias\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\"},\"headline\":\"Finding Implicit Column Conversions in the Plan Cache\",\"datePublished\":\"2010-01-08T18:54:18+00:00\",\"dateModified\":\"2013-04-11T17:56:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/finding-implicit-column-conversions-in-the-plan-cache\\\/\"},\"wordCount\":274,\"commentCount\":8,\"articleSection\":[\"Performance Tuning\",\"Plan Cache\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/finding-implicit-column-conversions-in-the-plan-cache\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/finding-implicit-column-conversions-in-the-plan-cache\\\/\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/finding-implicit-column-conversions-in-the-plan-cache\\\/\",\"name\":\"Finding Implicit Column Conversions in the Plan Cache - Jonathan Kehayias\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#website\"},\"datePublished\":\"2010-01-08T18:54:18+00:00\",\"dateModified\":\"2013-04-11T17:56:20+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/finding-implicit-column-conversions-in-the-plan-cache\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/finding-implicit-column-conversions-in-the-plan-cache\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/finding-implicit-column-conversions-in-the-plan-cache\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Performance Tuning\",\"item\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/category\\\/performance-tuning\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Finding Implicit Column Conversions in the Plan Cache\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#website\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/\",\"name\":\"Jonathan Kehayias - The Rambling DBA\",\"description\":\"The Rambling DBA\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\",\"name\":\"Jonathan Kehayias\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"caption\":\"Jonathan Kehayias\"},\"sameAs\":[\"http:\\\/\\\/3.209.169.194\\\/blogs\\\/jonathan\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Finding Implicit Column Conversions in the Plan Cache - Jonathan Kehayias","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:\/\/www.sqlskills.com\/blogs\/jonathan\/finding-implicit-column-conversions-in-the-plan-cache\/","og_locale":"en_US","og_type":"article","og_title":"Finding Implicit Column Conversions in the Plan Cache - Jonathan Kehayias","og_description":"Last year Tibor Karaszi posted a blog post titled Match Those Types that talked about implicit data type conversions associated with mismatched data types between filter criteria and table column data types.&#160; His blog post does a good job of covering the topic so I am not going to rehash it out here. However, at [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/finding-implicit-column-conversions-in-the-plan-cache\/","og_site_name":"Jonathan Kehayias","article_published_time":"2010-01-08T18:54:18+00:00","article_modified_time":"2013-04-11T17:56:20+00:00","author":"Jonathan Kehayias","twitter_misc":{"Written by":"Jonathan Kehayias","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/finding-implicit-column-conversions-in-the-plan-cache\/#article","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/finding-implicit-column-conversions-in-the-plan-cache\/"},"author":{"name":"Jonathan Kehayias","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c"},"headline":"Finding Implicit Column Conversions in the Plan Cache","datePublished":"2010-01-08T18:54:18+00:00","dateModified":"2013-04-11T17:56:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/finding-implicit-column-conversions-in-the-plan-cache\/"},"wordCount":274,"commentCount":8,"articleSection":["Performance Tuning","Plan Cache"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.sqlskills.com\/blogs\/jonathan\/finding-implicit-column-conversions-in-the-plan-cache\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/finding-implicit-column-conversions-in-the-plan-cache\/","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/finding-implicit-column-conversions-in-the-plan-cache\/","name":"Finding Implicit Column Conversions in the Plan Cache - Jonathan Kehayias","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#website"},"datePublished":"2010-01-08T18:54:18+00:00","dateModified":"2013-04-11T17:56:20+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/finding-implicit-column-conversions-in-the-plan-cache\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/jonathan\/finding-implicit-column-conversions-in-the-plan-cache\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/finding-implicit-column-conversions-in-the-plan-cache\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/"},{"@type":"ListItem","position":2,"name":"Performance Tuning","item":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/category\/performance-tuning\/"},{"@type":"ListItem","position":3,"name":"Finding Implicit Column Conversions in the Plan Cache"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/","name":"Jonathan Kehayias - The Rambling DBA","description":"The Rambling DBA","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c","name":"Jonathan Kehayias","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","caption":"Jonathan Kehayias"},"sameAs":["http:\/\/3.209.169.194\/blogs\/jonathan"]}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/1758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/comments?post=1758"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/1758\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/media?parent=1758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/categories?post=1758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/tags?post=1758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}