{"id":3281,"date":"2024-06-04T09:00:59","date_gmt":"2024-06-04T16:00:59","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/azure-sql\/?p=3281"},"modified":"2024-06-01T23:19:48","modified_gmt":"2024-06-02T06:19:48","slug":"announcing-unistr-and-ansi-sql-concatenation-operator-in-azure-sql","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/azure-sql\/announcing-unistr-and-ansi-sql-concatenation-operator-in-azure-sql\/","title":{"rendered":"Announcing UNISTR and || operator in Azure SQL Database &#8211; preview"},"content":{"rendered":"<p><span class=\"TextRun SCXW268069853 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW268069853 BCX8\">We are excited to announce that the UNISTR intrinsic function and <\/span><span class=\"NormalTextRun SCXW268069853 BCX8\">ANSI SQL concatenation <\/span><span class=\"NormalTextRun SCXW268069853 BCX8\">ope<\/span><span class=\"NormalTextRun SCXW268069853 BCX8\">ra<\/span><span class=\"NormalTextRun SCXW268069853 BCX8\">tor<\/span><span class=\"NormalTextRun SCXW268069853 BCX8\"> (<\/span><span class=\"NormalTextRun SCXW268069853 BCX8\">||<\/span><span class=\"NormalTextRun SCXW268069853 BCX8\">) <\/span><span class=\"NormalTextRun SCXW268069853 BCX8\">are now available in <\/span><\/span><strong><span class=\"TextRun SCXW268069853 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW268069853 BCX8\">public preview<\/span><\/span><\/strong><span class=\"TextRun SCXW268069853 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW268069853 BCX8\"> in Azure SQL Database. The UNISTR function allows you to escape Unicode characters, making it easier to work with international text. <\/span><span class=\"NormalTextRun SCXW268069853 BCX8\">The ANSI SQL <\/span><span class=\"NormalTextRun CommentStart SCXW268069853 BCX8\">concatenation<\/span> <span class=\"NormalTextRun SCXW268069853 BCX8\">ope<\/span><span class=\"NormalTextRun SCXW268069853 BCX8\">ra<\/span><span class=\"NormalTextRun SCXW268069853 BCX8\">tor<\/span><span class=\"NormalTextRun SCXW268069853 BCX8\"> (<\/span><span class=\"NormalTextRun SCXW268069853 BCX8\">||<\/span><span class=\"NormalTextRun SCXW268069853 BCX8\">) provides a simple and intuitive way to combine<\/span><span class=\"NormalTextRun SCXW268069853 BCX8\"> characters or binary<\/span><span class=\"NormalTextRun SCXW268069853 BCX8\"> strings. These new features will enhance your ability to manipulate and work with text data.<\/span><\/span><span class=\"EOP SCXW268069853 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h2>What is UNISTR function?<\/h2>\n<p><span class=\"TextRun SCXW188377386 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW188377386 BCX8\">The UNISTR function takes a text literal or an expression of characters and Unicode values, that resolves to character data and returns it <\/span><span class=\"NormalTextRun CommentStart SCXW188377386 BCX8\">as a UTF-8 or UTF-16 encoded string<\/span><span class=\"NormalTextRun SCXW188377386 BCX8\">. This function allows you <\/span><span class=\"NormalTextRun CommentStart SCXW188377386 BCX8\">to <\/span><span class=\"NormalTextRun SCXW188377386 BCX8\">use Unicode codepoint escape sequences with other characters in the string.<\/span><span class=\"NormalTextRun SCXW188377386 BCX8\"> The escape sequence for <\/span><span class=\"NormalTextRun SCXW188377386 BCX8\">a<\/span><span class=\"NormalTextRun SCXW188377386 BCX8\"> Unicode character can be specified in the form of <code>\\<\/code><\/span><code><span class=\"NormalTextRun SpellingErrorV2Themed SCXW188377386 BCX8\">xxxx<\/span><\/code><span class=\"NormalTextRun SCXW188377386 BCX8\"> or <code>\\+<\/code><\/span><code><span class=\"NormalTextRun SpellingErrorV2Themed SCXW188377386 BCX8\">xxxxxx<\/span><\/code><span class=\"NormalTextRun SCXW188377386 BCX8\">, where <\/span><code><span class=\"NormalTextRun SpellingErrorV2Themed SCXW188377386 BCX8\">xxxx<\/span><\/code><span class=\"NormalTextRun SCXW188377386 BCX8\"> is a valid UTF-16 codepoint value, and <\/span><code><span class=\"NormalTextRun SpellingErrorV2Themed SpellingErrorHighlight SCXW188377386 BCX8\">xxxxxx<\/span><\/code><span class=\"NormalTextRun SCXW188377386 BCX8\"> is a valid Unicode codepoint value. This is especially useful for inserting data into <code>NCHAR<\/code> columns.<\/span><\/span><span class=\"EOP SCXW188377386 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p>The syntax of the UNISTR function is as follows:<\/p>\n<pre class=\"prettyprint language-sql\"><code class=\"language-sql\">UNISTR ( 'character_expression' [ , 'unicode_escape_character' ] )<\/code><\/pre>\n<ul>\n<li>The data type of character_expression could be <strong>char<\/strong>,\u00a0<strong>nchar<\/strong>,\u00a0<strong>varchar<\/strong>, or\u00a0<strong>nvarchar<\/strong>. For\u00a0<strong>char <\/strong>and\u00a0<strong>varchar<\/strong>\u00a0data types, the collation should be a valid <a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/relational-databases\/collations\/collation-and-unicode-support?view=sql-server-ver16\">UTF-8 collation<\/a> only.<\/li>\n<li>A single character representing a user-defined Unicode escape sequence. If not supplied, the default value is\u00a0\\.<\/li>\n<\/ul>\n<h2>Examples<\/h2>\n<h4><span class=\"NormalTextRun SCXW156792597 BCX8\">Example <\/span><span class=\"NormalTextRun SCXW156792597 BCX8\">#1:<\/span><\/h4>\n<p>For example, the following query returns the Unicode character for the specified value:<\/p>\n<pre class=\"prettyprint language-sql\"><code class=\"language-sql\">-- All the queries below will produce the same output. \r\n\r\nSELECT UNISTR(N'Hello \\D83D\\DE00'); \r\nSELECT UNISTR(N'\\0048ello \\+01F603'); \r\nSELECT UNISTR(N'\\0048\\0065\\006C\\006C\\006F \\+01F603');<\/code><\/pre>\n<p>Results:<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>Hello \ud83d\ude03<\/p>\n<p>&nbsp;<\/p>\n<h4><span class=\"TextRun SCXW149059276 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW149059276 BCX8\">Example #2:<\/span><\/span><span class=\"EOP SCXW149059276 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h4>\n<p>In this example, the UNISTR function is used with a user-defined escape character (<code>$<\/code>) and a <code>VARCHAR<\/code> data type with UTF-8 collation.<\/p>\n<pre class=\"prettyprint language-sql\"><code class=\"language-sql\">SELECT UNISTR ('I $2665 Azure SQL.' COLLATE Latin1_General_100_CI_AS_KS_SC_UTF8, '$');<\/code><\/pre>\n<p>Results:<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>I \u2665 Azure SQL.<\/p>\n<p>&nbsp;<\/p>\n<p><div class=\"alert alert-primary\"><p class=\"alert-divider\"><i class=\"fabric-icon fabric-icon--Info\"><\/i><strong>Note<\/strong><\/p>The UNISTR function is not compatible with legacy code pages, meaning it does not support collations that use a code page.<\/p>\n<p><span class=\"TextRun SCXW240816170 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW240816170 BCX8\">The legacy collations with code page can be <\/span><span class=\"NormalTextRun SCXW240816170 BCX8\">identified<\/span><span class=\"NormalTextRun SCXW240816170 BCX8\"> using the query below:<\/span><\/span><\/p>\n<pre class=\"prettyprint language-sql\"><code class=\"language-sql\">SELECT DISTINCT p.language, p.codepage \r\nFROM sys.fn_helpcollations() AS c CROSS APPLY (VALUES(LEFT(c.name, CHARINDEX('_', c.name)-1), COLLATIONPROPERTY(c.name, 'codepage'))) AS p(language, codepage)\r\nWHERE p.codepage NOT IN (0 \/* Unicode Only collation *\/, 65001 \/* UTF-8 code page *\/);<\/code><\/pre>\n<p><\/div><\/p>\n<p>&nbsp;<\/p>\n<h2>What is ANSI SQL concatenation operator (||)?<\/h2>\n<p><span class=\"TextRun SCXW215048770 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW215048770 BCX8\">The <\/span><span class=\"NormalTextRun CommentStart SCXW215048770 BCX8\">ANSI SQL <\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">concatenation <\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">ope<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">ra<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">tor<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\"> (<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">||<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">) concatenates two or more <\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">characters<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\"> or binary <\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">strings, columns, or a combination of strings and column names into one expression<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">. The <\/span><code><span class=\"NormalTextRun SCXW215048770 BCX8\">||<\/span><\/code><span class=\"NormalTextRun SCXW215048770 BCX8\">ope<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">ra<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">tor<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\"> does not honor the <\/span><\/span><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/t-sql\/statements\/set-concat-null-yields-null-transact-sql?view=sql-server-ver16\">SET CONCAT_NULL_YIELDS_NULL<\/a><\/span> <span class=\"TextRun SCXW215048770 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW215048770 BCX8\">option<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\"> and always <\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">behaves as if the ANSI SQL behavior is enabled<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">. <\/span><span class=\"NormalTextRun CommentStart SCXW215048770 BCX8\">This <\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">ope<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">ra<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">tor<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\"> will work with character strings<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\"> or binary data<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\"> of any supported SQL Server collation<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">.<\/span> <span class=\"NormalTextRun SCXW215048770 BCX8\">The <\/span><code><span class=\"NormalTextRun SCXW215048770 BCX8\">||<\/span><\/code><span class=\"NormalTextRun SCXW215048770 BCX8\">ope<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">ra<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">tor<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\"> supports <\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">compound assignment <\/span><code><span class=\"NormalTextRun SCXW215048770 BCX8\">||<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">= <\/span><\/code><span class=\"NormalTextRun AdvancedProofingIssueV2Themed SCXW215048770 BCX8\">similar to<\/span><\/span><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/t-sql\/language-elements\/add-equals-transact-sql?view=sql-server-ver16\"> +=<\/a><\/span><span class=\"TextRun SCXW215048770 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW215048770 BCX8\">.<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\"> If the <\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">ope<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">ra<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">nds are of incompatible collation, then an error will be thrown.<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\"> The collation behavior <\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">is identical to the <a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/t-sql\/functions\/concat-transact-sql?view=sql-server-ver16\">CONCAT<\/a> function<\/span><span class=\"NormalTextRun SCXW215048770 BCX8\">\u00a0of character string data.<\/span><\/span><\/p>\n<p>The syntax of the string concatenation operator is as follows:<\/p>\n<pre class=\"prettyprint language-sql\"><code class=\"language-sql\">expression || expression<\/code><\/pre>\n<ul>\n<li><span class=\"TextRun SCXW251165467 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW251165467 BCX8\">The <a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/t-sql\/language-elements\/expressions-transact-sql?view=sql-server-ver16\">expression<\/a> is a character or binary expression. <\/span><span class=\"NormalTextRun SCXW251165467 BCX8\">Both expressions must be of the same data type, or one expression must be able to be implicitly converted to the data type of the other expression.<\/span> <span class=\"NormalTextRun SCXW251165467 BCX8\">If <\/span><span class=\"NormalTextRun SCXW251165467 BCX8\">one<\/span> <span class=\"NormalTextRun SCXW251165467 BCX8\">ope<\/span><span class=\"NormalTextRun SCXW251165467 BCX8\">ra<\/span><span class=\"NormalTextRun SCXW251165467 BCX8\">nd is <\/span><span class=\"NormalTextRun SCXW251165467 BCX8\">of<\/span><span class=\"NormalTextRun SCXW251165467 BCX8\"> binary type, then an unsupported <\/span><span class=\"NormalTextRun SCXW251165467 BCX8\">ope<\/span><span class=\"NormalTextRun SCXW251165467 BCX8\">ra<\/span><span class=\"NormalTextRun SCXW251165467 BCX8\">nd type error will be thrown.<\/span><\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>Examples<\/h2>\n<h4><span class=\"TextRun SCXW149059276 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW149059276 BCX8\">Example #1:<\/span><\/span><span class=\"EOP SCXW149059276 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h4>\n<p>For example, the following query concatenates two strings and returns the result:<\/p>\n<pre class=\"prettyprint language-sql\"><code class=\"language-sql\">SELECT 'Hello ' || ' World!';<\/code><\/pre>\n<p>Results:<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>Hello World!<\/p>\n<p>&nbsp;<\/p>\n<h4><span class=\"TextRun SCXW149059276 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW149059276 BCX8\">Example #2:<\/span><\/span><\/h4>\n<p>In this example, multiple character strings are concatenated. If at least one input is a character string, non-character strings will be implicitly converted to character strings.<\/p>\n<pre class=\"prettyprint language-sql\"><code class=\"language-sql\">SELECT 'Jos\u00e8' || ' Doe' AS full_name,\r\n       'Order-' || CAST(1001 AS VARCHAR) || '~TS~' || current_timestamp || '~' || NEWID() AS order_details,\r\n       'Item-' || NULL AS item_desc;<\/code><\/pre>\n<p>Results:<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>full_name order_details\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0item_desc<\/p>\n<p>Jos\u00e8 Doe Order-1001~TS~Jun 1 2024 6:25AM~442A4706-0002-48EC-84FC-8AF27XXXX NULL<\/p>\n<p>&nbsp;<\/p>\n<h4><span class=\"TextRun SCXW149059276 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW149059276 BCX8\">Example #3:<\/span><\/span><span class=\"EOP SCXW149059276 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h4>\n<p>In the example below, concatenating two or more binary strings and also compounding with T-SQL assignment operator.<\/p>\n<pre class=\"prettyprint language-sql\"><code class=\"language-sql\">DECLARE @v1 VARBINARY(10) = 0x1a;\r\nSET @v1 ||= 0x2b;\r\nSELECT @v1 as V1, 0x|| 0x4E as B1, CAST(NEWID() AS VARBINARY) || 0xa5 as B2<\/code><\/pre>\n<p>Results:<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>V1\u2002\u2002\u2002\u2002\u2002\u2002\u2002\u2002\u2002\u2002B1\u2002\u2002\u2002\u2002B2<\/p>\n<p>0x1A2B\u2002\u2002\u2002\u2002\u00a0 \u00a00x4E\u2002\u20020xAE8C602E951AC245ADE767A23C834704A5<\/p>\n<p>&nbsp;<\/p>\n<h4><span class=\"TextRun SCXW149059276 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW149059276 BCX8\">Example #4:<\/span><\/span><span class=\"EOP SCXW149059276 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h4>\n<p>As shown in the example below, using the <code>||<\/code> operator with only non-character types or combining binary data with other types is not supported.<\/p>\n<pre class=\"prettyprint language-sql\"><code class=\"language-sql\">SELECT 1|| 2;\r\nSELECT 1|| 'a' || 0x4e;<\/code><\/pre>\n<p><span data-contrast=\"auto\">Above queries will fail with error messages as below \u2013 <\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<pre><span style=\"color: #ff0000\">The data types int and int are incompatible in the concat operator. \r\nThe data types varchar and varbinary are incompatible in the concat operator.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0\r\n\r\n\r\n\r\n<\/span><\/pre>\n<h2>Conclusion<\/h2>\n<p><span data-contrast=\"auto\">In this blog post, we have introduced the UNISTR function and\u00a0ANSI SQL concatenation operator (||)\u00a0in Azure SQL Database. <\/span><span data-contrast=\"none\">\u202fThe UNISTR function allows you to escape Unicode characters, making it easier to work with international text.\u00a0ANSI SQL concatenation operator (||)\u00a0provides a simple and intuitive way to combine characters or binary data. These new features will enhance your ability to manipulate and work with text data efficiently.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">We hope you will explore these enhancements, apply them in your projects, and share your feedback with us to help us continue improving.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span>Thank you!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We are excited to announce that the UNISTR intrinsic function and ANSI SQL concatenation operator (||) are now available in public preview in Azure SQL Database. The UNISTR function allows you to escape Unicode characters, making it easier to work with international text. The ANSI SQL concatenation operator (||) provides a simple and intuitive way [&hellip;]<\/p>\n","protected":false},"author":29335,"featured_media":81,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1,619],"tags":[620],"class_list":["post-3281","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-sql","category-t-sql","tag-unistr"],"acf":[],"blog_post_summary":"<p>We are excited to announce that the UNISTR intrinsic function and ANSI SQL concatenation operator (||) are now available in public preview in Azure SQL Database. The UNISTR function allows you to escape Unicode characters, making it easier to work with international text. The ANSI SQL concatenation operator (||) provides a simple and intuitive way [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/posts\/3281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/users\/29335"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/comments?post=3281"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/posts\/3281\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/media\/81"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/media?parent=3281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/categories?post=3281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/tags?post=3281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}