{"id":2446,"date":"2021-01-03T18:21:56","date_gmt":"2021-01-03T18:21:56","guid":{"rendered":"http:\/\/manualsqlserver.com\/?p=2446"},"modified":"2021-01-03T18:21:58","modified_gmt":"2021-01-03T18:21:58","slug":"coalesce-sql-server","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=2446","title":{"rendered":"Coalesce SQL Server"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce__D.png\"><img loading=\"lazy\" decoding=\"async\" width=\"220\" height=\"260\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce__D.png\" alt=\"\" class=\"wp-image-2447\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Usando la funci\u00f3n Coalesce<\/h2>\n\n\n\n<p>En una base de datos es una buena pr\u00e1ctica que no existan valores Null, esto se puede evitar usando la restricci\u00f3n de tipo Default y desde la aplicaci\u00f3n el programador puede enviar un dato predeterminado en los campos que el usuario no ingrese valor. (<a href=\"https:\/\/manualsqlserver.com\/?p=117\" target=\"_blank\" rel=\"noreferrer noopener\">Ver Crear tablas<\/a>)<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Por otro lado, deber\u00eda realizarse tareas para revisar que la base de datos<br>no tenga valores Null, pero si los hubiera, es necesario en muchos casos<br>evitarlos o tenerlos en cuenta en las consultas.<\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>Como usar Coalesce en SQL Server<\/strong><\/p>\n\n\n\n<p>La funci\u00f3n Coalesce evalua un grupo de valores y retorna el primer valor de la lista de argumentos que no tiene valor Null.<br><strong>Sintaxis<\/strong><br>Coalesce(Expresi\u00f3n1 [, Expresi\u00f3n2, Expresi\u00f3n3, \u2026])<br><strong>Donde:<\/strong><br>Expresi\u00f3n1 [, Expresi\u00f3n2, Expresi\u00f3n3, \u2026] son las expresiones que pueden contener valores Null.<\/p>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p style=\"font-size:26px\"><strong>Ejemplos<\/strong><\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejercicio 1<\/strong><\/p>\n\n\n\n<p><strong>Reporte del primer valor no Null<\/strong><br>select coalesce(Null, Null, &#8216;valor v\u00e1lido&#8217;, &#8216;Otro dato&#8217;, Null) As &#8216;Dato&#8217;<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_01.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_01.png\" alt=\"\" class=\"wp-image-2448\" width=\"548\" height=\"239\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_01.png 325w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_01-300x131.png 300w\" sizes=\"auto, (max-width: 548px) 100vw, 548px\" \/><\/a><\/figure>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejercicio 2<\/strong><\/p>\n\n\n\n<p><strong>Crear una tabla con dos campos que pueden tener valores Null<br>En este ejercicio se va a crear una tabla con algunos campos que permiten valores Null, luego se va a comparar los listados sin usar y usando la funci\u00f3n Coalesce<\/strong><\/p>\n\n\n\n<p><strong>Usando la base de datos Northwind<br><\/strong>use Northwind<br>go<br>Create Table PruebaCoalesce<br>(<br>PruebaCodigo nchar(4),<br>PruebaDescripcion nvarchar(100),<br>PruebaDato1 nvarchar(50),<br>PruebaDato2 nvarchar(50),<br>PruebaDato3 nvarchar(50),<br>constraint PruebaPK primary key (PruebaCodigo)<br>)<br>go<br>insert into PruebaCoalesce values<br>(&#8216;8521&#8242;,&#8217;Trainer SQL Server&#8217;,Null, &#8216;Valor insertado&#8217;,&#8217;Dato V\u00e1lido&#8217;),<br>(&#8216;1598&#8242;,&#8217;Gu\u00eda profesional SQL&#8217;,&#8217;Primer valor&#8217;, Null,&#8217;Servicios&#8217;),<br>(&#8216;3654&#8242;,&#8217;Datos para SQL&#8217;,Null, Null,&#8217;SQL Server&#8217;),<br>(&#8216;2596&#8242;,&#8217;Valor de Coalesce&#8217;,Null, Null,&#8217;Programando SQL&#8217;),<br>(&#8216;7533&#8242;,&#8217;Conviertete en DBA&#8217;,Null, &#8216;Recuerdo&#8217;,&#8217;Dato V\u00e1lido&#8217;),<br>(&#8216;4569&#8242;,&#8217;DBA por accidente, es v\u00e1lido&#8217;,&#8217;Casino SQL&#8217;, &#8216;Valor insertado&#8217;,&#8217;Dato V\u00e1lido&#8217;),<br>(&#8216;8547&#8242;,&#8217;Funciones de SQL Server&#8217;,Null, Null,&#8217;Fin de Prueba&#8217;)<br>go<br><strong>El listado de todos los campos<br><\/strong>select * from PruebaCoalesce<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_02.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_02.png\" alt=\"\" class=\"wp-image-2449\" width=\"781\" height=\"294\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_02.png 747w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_02-300x113.png 300w\" sizes=\"auto, (max-width: 781px) 100vw, 781px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Usando Coalesce, para obtener el primer resultado v\u00e1lido de una de las columnas con nombre PruebaDato<\/strong><br>select [PruebaCodigo], [PruebaDescripcion], [PruebaDato1],<br>[PruebaDato2], [PruebaDato3],<br>Coalesce([PruebaDato1], [PruebaDato2], [PruebaDato3]) As &#8216;Resultado&#8217;<br>from PruebaCoalesce<br>go<br><strong>El resultado se muestra en la siguiente imagen<br>Note la \u00faltima columna, muestra el primer valor v\u00e1lido diferente de Null.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_03.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_03.png\" alt=\"\" class=\"wp-image-2450\" width=\"856\" height=\"247\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_03.png 957w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_03-300x87.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_03-768x222.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_03-795x230.png 795w\" sizes=\"auto, (max-width: 856px) 100vw, 856px\" \/><\/a><\/figure>\n\n\n\n<p><strong>El listado anterior podr\u00eda usarse de la siguiente forma<\/strong><br>select [PruebaCodigo], [PruebaDescripcion],<br>Coalesce([PruebaDato1], [PruebaDato2], [PruebaDato3]) As &#8216;Resultado&#8217;<br>from PruebaCoalesce<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_04.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_04.png\" alt=\"\" class=\"wp-image-2451\" width=\"839\" height=\"407\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_04.png 571w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_04-300x146.png 300w\" sizes=\"auto, (max-width: 839px) 100vw, 839px\" \/><\/a><figcaption>La columna Resultado tiene el primer valor no Null de los campos PruebaDato1, <em>PruebaDato2 y <em>PruebaDato4<\/em><\/em><\/figcaption><\/figure>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejercicio 3<\/strong><\/p>\n\n\n\n<p><strong>En el departamento de personal se ha dise\u00f1ado una tabla que permite tres formas de pago diferentes, una teniendo en cuenta la cantidad de horas trabajadas, otra con un salario asignado y una tercera teniendo en cuenta una comisi\u00f3n por ventas.<\/strong><\/p>\n\n\n\n<p>Create table Pagos<br>(<br>EmpleadoCodigo nchar(4),<br>EmpleadoNombre nvarchar(100),<br>PagoHora Numeric(9,2),<br>Salario Numeric(9,2),<br>Comision Numeric(9,2),<br>NumeroVentas Numeric(9,2)<br>constraint PagosPK primary key (EmpleadoCodigo)<br>)<br>go<br>INSERT INTO Pagos (EmpleadoCodigo, EmpleadoNombre, PagoHora, Salario,<br>Comision, NumeroVentas) VALUES<br>(&#8216;F698&#8217;, &#8216;FERNANDO LUQUE&#8217;, 120.00, NULL, NULL, NULL),<br>(&#8216;T673&#8217;, &#8216;INGRID CHAVEZ&#8217;, 80.00, NULL, NULL, NULL),<br>(&#8216;M345&#8217;, &#8216;ROXANA VALLEJO&#8217;, 90.00, NULL, NULL, NULL),<br>(&#8216;E150&#8217;, &#8216;JOSE ALCANTARA&#8217;, 60.00, NULL, NULL, NULL),<br>(&#8216;V970&#8217;, &#8216;VALENTINO CARRASCO&#8217;,NULL, 8000.00, NULL, NULL),<br>(&#8216;R456&#8217;, &#8216;CARLOS MENDIOLA&#8217;,NULL, 4000.00, NULL, NULL),<br>(&#8216;C689&#8217;, &#8216;RENATO CAMPOS&#8217;,NULL, 3000.00, NULL, NULL),<br>(&#8216;S324&#8217;, &#8216;PEDRO CUBA&#8217;,NULL, 7500.00, NULL, NULL),<br>(&#8216;H893&#8217;, &#8216;ESMERALDA TERRANOVA&#8217;,NULL, NULL, 1500, 5),<br>(&#8216;W437&#8217;, &#8216;ARACELY WONG&#8217;,NULL, NULL, 3200, 4),<br>(&#8216;N045&#8217;, &#8216;VICTOR SANCHEZ&#8217;,NULL, NULL, 720, 12),<br>(&#8216;D996&#8217;, &#8216;MARIO LIZARZABURO&#8217;,NULL, NULL, 1400, 3)<br>go<br><strong>El listado de los Empleados se muestra como sigue:<br><\/strong>select * from Pagos<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_05.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_05.png\" alt=\"\" class=\"wp-image-2452\" width=\"757\" height=\"380\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_05.png 803w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_05-300x151.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_05-768x385.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_05-795x399.png 795w\" sizes=\"auto, (max-width: 757px) 100vw, 757px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Se desea mostrar el listado de los empleados y sus pagos. El que tiene asignado un pago por hora se calcula en base a 22 d\u00edas y a 8 horas diarias. Los que tienen asignado una comisi\u00f3n se calcula el pago multiplicando la comisi\u00f3n por el n\u00famero de ventas.<\/strong><br>SELECT P.EmpleadoCodigo As &#8216;C\u00f3digo&#8217;, P.EmpleadoNombre As &#8216;Empleado&#8217;,<br>Cast(COALESCE(PagoHora* 8 * 22, Salario, Comision * NumeroVentas)<br>As Numeric(10,2)) As &#8216;Pago Mensual&#8217;<br>From Pagos As P<br>order by [Pago Mensual] desc<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_06.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_06.png\" alt=\"\" class=\"wp-image-2453\" width=\"710\" height=\"582\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_06.png 484w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_06-300x246.png 300w\" sizes=\"auto, (max-width: 710px) 100vw, 710px\" \/><\/a><\/figure>\n\n\n\n<p style=\"font-size:22px\"><strong>Usando Case en lugar de Coalesce (<a rel=\"noreferrer noopener\" href=\"https:\/\/manualsqlserver.com\/?p=1482\" target=\"_blank\">Vea Estructura Case<\/a>)<\/strong><\/p>\n\n\n\n<p><strong>La estructura Case se puede usar en lugar de la funci\u00f3n Coalesce.<br>En el ejemplo anterior, el resultado del listado usando Case es como sigue<\/strong><br>SELECT P.EmpleadoCodigo As &#8216;C\u00f3digo&#8217;, P.EmpleadoNombre As &#8216;Empleado&#8217;,<br>(Case<br>When P.PagoHora is not null then PagoHora* 8 * 22<br>when P.Salario is not null then Salario<br>When P.Comision is not null then Comision * NumeroVentas<br>End<br>) As &#8216;Pago Mensual&#8217;<br>From Pagos As P<br>order by [Pago Mensual] desc<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_07.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_07.png\" alt=\"\" class=\"wp-image-2454\" width=\"709\" height=\"569\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_07.png 496w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_07-300x241.png 300w\" sizes=\"auto, (max-width: 709px) 100vw, 709px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Analizando el plan estimado de ejecuci\u00f3n<br>Para la instrucci\u00f3n usando la funci\u00f3n Coalesce:<\/strong><br>SELECT P.EmpleadoCodigo As &#8216;C\u00f3digo&#8217;, P.EmpleadoNombre As &#8216;Empleado&#8217;,<br>Cast(COALESCE(PagoHora* 8 * 22, Salario, Comision * NumeroVentas)<br>As Numeric(10,2)) As &#8216;Pago Mensual&#8217;<br>From Pagos As P<br>order by [Pago Mensual] desc<br>go<br>Costo: 0.0147249<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_08.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_08.png\" alt=\"\" class=\"wp-image-2455\" width=\"714\" height=\"547\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_08.png 602w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_08-300x230.png 300w\" sizes=\"auto, (max-width: 714px) 100vw, 714px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Para la instrucci\u00f3n usando Case:<br><\/strong>SELECT P.EmpleadoCodigo As &#8216;C\u00f3digo&#8217;, P.EmpleadoNombre As &#8216;Empleado&#8217;,<br>(Case<br>When P.PagoHora is not null then PagoHora* 8 * 22<br>when P.Salario is not null then Salario<br>When P.Comision is not null then Comision * NumeroVentas<br>End<br>) As &#8216;Pago Mensual&#8217;<br>From Pagos As P<br>order by [Pago Mensual] desc<br>go<br>Costo: 0.0147249<br><strong>Note que son exactamente iguales, posiblemente la elecci\u00f3n sea de acuerdo a la escritura de la instrucci\u00f3n, Coalesce parece ser mas sencilla.<br>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_09.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_09.png\" alt=\"\" class=\"wp-image-2456\" width=\"699\" height=\"641\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_09.png 622w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_09-300x275.png 300w\" sizes=\"auto, (max-width: 699px) 100vw, 699px\" \/><\/a><\/figure>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejercicio 4<\/strong><\/p>\n\n\n\n<p><strong>Listado de correos de un participante, puede ser que un participante no tenga correo, en ese caso se mostrar\u00e1 el mensaje \u00abSin correo\u00bb, lo mismo para los celulares.<\/strong><br>Drop Table if exists Participantes<br>go<br>Create table Participantes<br>(<br>ParticipantesCodigo nchar(5),<br>ParticipantesPaterno nvarchar(50) not null,<br>ParticipantesMaterno nvarchar(50) not null,<br>ParticipantesNombres nvarchar(50) not null,<br>ParticipantesCorreoHotmail nvarchar(50),<br>ParticipantesGmail nvarchar(50),<br>ParticipantesCorporativo nvarchar(50),<br>ParticipantesCelularPersonal nvarchar(50),<br>ParticipantesCelularCorporativo nvarchar(50),<br>constraint ParticipantesPK Primary key (ParticipantesCodigo)<br>)<br>go<br>Insert into Participantes values<br>( &#8216;P4562&#8242;,&#8217;Luque&#8217;,&#8217;Sanchez&#8217;,&#8217;Fernando&#8217;,NULL,Null,Null,Null, &#8216;987654321&#8217;),<br>( &#8216;P5852&#8242;,&#8217;Carranza&#8217;,&#8217;Mendoza&#8217;,&#8217;Manuel&#8217;,NULL,&#8217;mcarranza@gmail.com&#8217;,&#8217;mcarranza775@miempresa.com&#8217;,&#8217;963258741&#8242;, &#8216;951235746&#8217;),<br>( &#8216;P0235&#8242;,&#8217;Chavez&#8217;,&#8217;Alvarado&#8217;,&#8217;Ingrid&#8217;,&#8217;ichavez@hotmail.com&#8217;,&#8217;arachavez@gmail.com&#8217;,Null,Null, Null),<br>( &#8216;P8521&#8242;,&#8217;Sandoval&#8217;,&#8217;Palacios&#8217;,&#8217;Yeni&#8217;,&#8217;yenipal@hotmail.com&#8217;,Null,Null,&#8217;951357485&#8242;, &#8216;987654321&#8217;),<br>( &#8216;P6521&#8242;,&#8217;Terranova&#8217;,&#8217;Holguin&#8217;,&#8217;Marco&#8217;,&#8217;marcoth@hotmail.com&#8217;,Null,Null,&#8217;951357485&#8242;, &#8216;987654321&#8217;),<br>( &#8216;P1596&#8242;,&#8217;Villanueva&#8217;,&#8217;Llanos&#8217;,&#8217;Sergio&#8217;,Null,Null,&#8217;villaser@miempresa.com&#8217;,&#8217;987625426&#8242;, Null)<br>go<\/p>\n\n\n\n<p><strong>El listado sin el uso de Coalesce<br><\/strong>Select P.ParticipantesCodigo As &#8216;C\u00f3digo&#8217;,<br>Participante = CONCAT_WS(space(1),P.ParticipantesNombres, P.ParticipantesPaterno, P.ParticipantesMaterno),<br>P.ParticipantesCorreoHotmail As &#8216;Hotmail&#8217;,<br>P.ParticipantesGmail As &#8216;Gmail&#8217;,<br>p.ParticipantesCorporativo As &#8216;Mail Corporativo&#8217;,<br>P.ParticipantesCelularPersonal As &#8216;Cel Personal&#8217;,<br>P.ParticipantesCelularCorporativo As &#8216;Cel Corporativo&#8217;<br>from Participantes As P<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_10.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_10-1024x227.png\" alt=\"\" class=\"wp-image-2457\" width=\"871\" height=\"193\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_10-1024x227.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_10-300x66.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_10-768x170.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_10-795x176.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_10.png 1193w\" sizes=\"auto, (max-width: 871px) 100vw, 871px\" \/><\/a><\/figure>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p><strong>Usando Coalesce<br><\/strong>Select<br>P.ParticipantesCodigo As &#8216;C\u00f3digo&#8217;,<br>Participante =<br>Concat_ws(Space(1),P.ParticipantesNombres, P.ParticipantesPaterno, P.ParticipantesMaterno),<br>Coalesce(ParticipantesCorreoHotmail, ParticipantesGmail, ParticipantesCorporativo, &#8216;No especificado&#8217;) As &#8216;Correo&#8217;,<br>Coalesce(ParticipantesCelularPersonal, ParticipantesCelularCorporativo, &#8216;No especificado&#8217;) As &#8216;Celular&#8217;<br>From Participantes As P<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_11.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_11.png\" alt=\"\" class=\"wp-image-2458\" width=\"764\" height=\"294\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_11.png 688w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_11-300x116.png 300w\" sizes=\"auto, (max-width: 764px) 100vw, 764px\" \/><\/a><\/figure>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejercicio 5<\/strong><\/p>\n\n\n\n<p><strong>En este ejercicio se va a utilizar Coalesce para concatenar las provincias de cada departamento de Per\u00fa<\/strong><br>Drop table If exists Departamentos<br>go<br>Create table Departamentos<br>(<br>DepartamentosCodigo int,<br>DepartamentosNombre nvarchar(50),<br>DepartamentosCapital nvarchar(50),<br>constraint DepartamentosPK Primary key (DepartamentosCodigo)<br>)<br>go<br><strong>Los departamentos<br><\/strong>insert into Departamentos values (1,&#8217;Amazonas&#8217;,&#8217;Chachapoyas&#8217;)<br>insert into Departamentos values (2,&#8217;\u00c1ncash&#8217;,&#8217;Huaraz&#8217;)<br>insert into Departamentos values (3,&#8217;Apur\u00edmac&#8217;,&#8217;Abancay&#8217;)<br>insert into Departamentos values (4,&#8217;Arequipa&#8217;,&#8217;Arequipa&#8217;)<br>insert into Departamentos values (5,&#8217;Ayacucho&#8217;,&#8217;Ayacucho&#8217;)<br>insert into Departamentos values (6,&#8217;Cajamarca&#8217;,&#8217;Cajamarca&#8217;)<br>insert into Departamentos values (7,&#8217;Callao\u200b&#8217;,&#8217;Callao&#8217;)<br>insert into Departamentos values (8,&#8217;Cusco&#8217;,&#8217;Cusco&#8217;)<br>insert into Departamentos values (9,&#8217;Huancavelica&#8217;,&#8217;Huancavelica&#8217;)<br>insert into Departamentos values (10,&#8217;Hu\u00e1nuco&#8217;,&#8217;Hu\u00e1nuco&#8217;)<br>insert into Departamentos values (11,&#8217;Ica&#8217;,&#8217;Ica&#8217;)<br>insert into Departamentos values (12,&#8217;Jun\u00edn&#8217;,&#8217;Huancayo&#8217;)<br>insert into Departamentos values (13,&#8217;La Libertad&#8217;,&#8217;Trujillo&#8217;)<br>insert into Departamentos values (14,&#8217;Lambayeque&#8217;,&#8217;Chiclayo&#8217;)<br>insert into Departamentos values (15,&#8217;Lima&#8217;,&#8217;Lima&#8217;)<br>insert into Departamentos values (16,&#8217;Loreto&#8217;,&#8217;Iquitos&#8217;)<br>insert into Departamentos values (17,&#8217;Madre de Dios&#8217;,&#8217;Puerto Maldonado&#8217;)<br>insert into Departamentos values (18,&#8217;Moquegua&#8217;,&#8217;Moquegua&#8217;)<br>insert into Departamentos values (19,&#8217;Pasco&#8217;,&#8217;Cerro de Pasco&#8217;)<br>insert into Departamentos values (20,&#8217;Piura&#8217;,&#8217;Piura&#8217;)<br>insert into Departamentos values (21,&#8217;Puno&#8217;,&#8217;Puno&#8217;)<br>insert into Departamentos values (22,&#8217;San Mart\u00edn&#8217;,&#8217;Moyobamba&#8217;)<br>insert into Departamentos values (23,&#8217;Tacna&#8217;,&#8217;Tacna&#8217;)<br>insert into Departamentos values (24,&#8217;Tumbes&#8217;,&#8217;Tumbes&#8217;)<br>insert into Departamentos values (25,&#8217;Ucayali&#8217;,&#8217;Pucallpa&#8217;)<br>go<br><strong>Provincias, se van a insertar en una columna separadas por coma, luego se usar\u00e1 la funci\u00f3n String_Split para presentarlas cada una en una fila.<br><\/strong>Drop table if exists Provincias<br>go<br>Create table Provincias<br>(<br>DepartamentosCodigo int,<br>ProvinciasCantidad int,<br>ProvinciasNombres nvarchar(1000),<br>constraint ProvinciasPK primary key (DepartamentosCodigo),<br>constraint ProvinciasDepartamentosPK foreign key (DepartamentosCodigo)<br>references Departamentos(DepartamentosCodigo)<br>)<br>go<br><strong>Las provincias<br><\/strong>insert into Provincias values (1,7,&#8217;\u00a0Chachapoyas\u00a0,\u00a0Bagua\u00a0,\u00a0Bongar\u00e1\u00a0,\u00a0Condorcanqui\u00a0,\u00a0Luya\u00a0,\u00a0Rodr\u00edguez de Mendoza\u00a0,\u00a0Utcubamba\u00a0&#8216;)<br>insert into Provincias values (2,20,&#8217;\u00a0Aija\u00a0,\u00a0Antonio Raymondi\u00a0,\u00a0Asunci\u00f3n\u00a0,\u00a0Bolognesi\u00a0,\u00a0Carhuaz\u00a0,\u00a0Carlos F. Fitzcarrald\u00a0,\u00a0Casma\u00a0,\u00a0Corongo\u00a0,\u00a0Huaraz\u00a0,\u00a0Huari\u00a0,\u00a0Huarmey\u00a0,\u00a0Huaylas\u00a0,\u00a0Mariscal Luzuriaga\u00a0,\u00a0Ocros\u00a0,\u00a0Pallasca\u00a0,\u00a0Pomabamba\u00a0,\u00a0Recuay\u00a0,\u00a0Santa\u00a0,\u00a0Sihuas\u00a0,\u00a0Yungay&#8217;)<br>insert into Provincias values (3,7,&#8217;\u00a0Abancay\u00a0,\u00a0Antabamba\u00a0,\u00a0Aymaraes\u00a0,\u00a0Cotabambas\u00a0,\u00a0Grau\u00a0,\u00a0Chincheros\u00a0,\u00a0Andahuaylas&#8217;)<br>insert into Provincias values (4,8,&#8217;\u00a0Arequipa\u00a0,\u00a0Caman\u00e1\u00a0,\u00a0Caravel\u00ed\u00a0,\u00a0Castilla\u00a0,\u00a0Caylloma\u00a0,\u00a0Condesuyos\u00a0,\u00a0Islay\u00a0,\u00a0La Uni\u00f3n&#8217;)<br>insert into Provincias values (5,11,&#8217;\u00a0Cangallo\u00a0,\u00a0Huanta\u00a0,\u00a0Huamanga\u00a0,\u00a0Huanca Sancos\u00a0,\u00a0La Mar\u00a0,\u00a0Lucanas\u00a0,\u00a0Parinacochas\u00a0,\u00a0P\u00e1ucar del Sara Sara\u00a0,\u00a0Sucre\u00a0,\u00a0V\u00edctor Fajardo\u00a0,\u00a0Vilcashuam\u00e1n&#8217;)<br>insert into Provincias values (6,13,&#8217;\u00a0Cajamarca\u00a0,\u00a0Cajabamba\u00a0,\u00a0Celend\u00edn\u00a0,\u00a0Chota\u00a0,\u00a0Contumaz\u00e1\u00a0,\u00a0Cutervo\u00a0,\u00a0Hualgayoc\u00a0,\u00a0Ja\u00e9n\u00a0,\u00a0San Ignacio\u00a0,\u00a0San Marcos\u00a0,\u00a0San Miguel\u00a0,\u00a0San Pablo\u00a0,\u00a0Santa Cruz&#8217;)<br>insert into Provincias values (7,1,&#8217;\u00a0Callao&#8217;)<br>insert into Provincias values (8,13,&#8217;\u00a0Cuzco\u00a0,\u00a0Acomayo\u00a0,\u00a0Anta\u00a0,\u00a0Calca\u00a0,\u00a0Canas\u00a0,\u00a0Canchis\u00a0,\u00a0Chumbivilcas\u00a0,\u00a0Espinar\u00a0,\u00a0La Convenci\u00f3n\u00a0,\u00a0Paruro\u00a0,\u00a0Paucartambo\u00a0,\u00a0Quispicanchi\u00a0,\u00a0Urubamba&#8217;)<br>insert into Provincias values (9,7,&#8217;\u00a0Huancavelica\u00a0,\u00a0Acobamba\u00a0,\u00a0Angaraes\u00a0,\u00a0Castrovirreyna\u00a0,\u00a0Churcampa\u00a0,\u00a0Huaytar\u00e1\u00a0,\u00a0Tayacaja&#8217;)<br>insert into Provincias values (10,11,&#8217;\u00a0Hu\u00e1nuco\u00a0,\u00a0Ambo\u00a0,\u00a0Dos de Mayo\u00a0,\u00a0Huacaybamba\u00a0,\u00a0Huamal\u00edes\u00a0,\u00a0Leoncio Prado\u00a0,\u00a0Mara\u00f1\u00f3n\u00a0,\u00a0Pachitea\u00a0,\u00a0Puerto Inca\u00a0,\u00a0Lauricocha\u00a0,\u00a0Yarowilca&#8217;)<br>insert into Provincias values (11,5,&#8217;\u00a0Ica\u00a0,\u00a0Chincha\u00a0,\u00a0Nazca\u00a0,\u00a0Palpa\u00a0,\u00a0Pisco&#8217;)<br>insert into Provincias values (12,9,&#8217;\u00a0Chanchamayo\u00a0,\u00a0Chupaca\u00a0,\u00a0Concepci\u00f3n\u00a0,\u00a0Huancayo\u00a0,\u00a0Jauja\u00a0,\u00a0Jun\u00edn\u00a0,\u00a0Satipo\u00a0,\u00a0Tarma\u00a0,\u00a0Yauli&#8217;)<br>insert into Provincias values (13,12,&#8217;\u00a0Ascope\u00a0,\u00a0Bol\u00edvar\u00a0,\u00a0Chep\u00e9n\u00a0,\u00a0Gran Chim\u00fa\u00a0,\u00a0Julc\u00e1n\u00a0,\u00a0Otuzco\u00a0,\u00a0Pacasmayo\u00a0,\u00a0Pataz\u00a0,\u00a0S\u00e1nchez Carri\u00f3n\u00a0,\u00a0Santiago de Chuco\u00a0,\u00a0Trujillo\u00a0,\u00a0Vir\u00fa&#8217;)<br>insert into Provincias values (14,3,&#8217;\u00a0Chiclayo\u00a0,\u00a0Ferre\u00f1afe\u00a0,\u00a0Lambayeque&#8217;)<br>insert into Provincias values (15,10,&#8217;\u00a0Barranca\u00a0,\u00a0Cajatambo\u00a0,\u00a0Canta\u00a0,\u00a0Ca\u00f1ete\u00a0,\u00a0Huaral\u00a0,\u00a0Huarochir\u00ed\u00a0,\u00a0Huaura\u00a0,\u00a0Lima\u00a0,\u00a0Oy\u00f3n\u00a0,\u00a0Yauyos&#8217;)<br>insert into Provincias values (16,8,&#8217;\u00a0Putumayo\u00a0,\u00a0Alto Amazonas\u00a0,\u00a0Datem del Mara\u00f1\u00f3n\u00a0,\u00a0Loreto\u00a0,\u00a0Mariscal Ram\u00f3n Castilla\u00a0,\u00a0Maynas\u00a0,\u00a0Requena\u00a0,\u00a0Ucayali&#8217;)<br>insert into Provincias values (17,3,&#8217;\u00a0Tambopata\u00a0,\u00a0Manu\u00a0,\u00a0Tahuamanu&#8217;)<br>insert into Provincias values (18,3,&#8217;\u00a0General S\u00e1nchez Cerro\u00a0,\u00a0Ilo\u00a0,\u00a0Mariscal Nieto&#8217;)<br>insert into Provincias values (19,3,&#8217;\u00a0Pasco\u00a0,\u00a0Daniel A. Carri\u00f3n\u00a0,\u00a0Oxapampa&#8217;)<br>insert into Provincias values (20,8,&#8217;\u00a0Ayabaca\u00a0,\u00a0Huancabamba\u00a0,\u00a0Morrop\u00f3n\u00a0,\u00a0Paita\u00a0,\u00a0Piura\u00a0,\u00a0Sechura\u00a0,\u00a0Sullana\u00a0,\u00a0Talara&#8217;)<br>insert into Provincias values (21,13,&#8217;\u00a0Puno\u00a0,\u00a0Az\u00e1ngaro\u00a0,\u00a0Carabaya\u00a0,\u00a0Chucuito\u00a0,\u00a0El Collao\u00a0,\u00a0Huancan\u00e9\u00a0,\u00a0Lampa\u00a0,\u00a0Melgar\u00a0,\u00a0San Antonio de Putina\u00a0,\u00a0San Rom\u00e1n\u00a0,\u00a0Sandia\u00a0,\u00a0Yunguyo\u00a0,\u00a0Moho&#8217;)<br>insert into Provincias values (22,10,&#8217;\u00a0Bellavista\u00a0,\u00a0El Dorado\u00a0,\u00a0Huallaga\u00a0,\u00a0Lamas\u00a0,\u00a0Mariscal C\u00e1ceres\u00a0,\u00a0Moyobamba\u00a0,\u00a0Picota\u00a0,\u00a0Rioja\u00a0,\u00a0San Mart\u00edn\u00a0,\u00a0Tocache&#8217;)<br>insert into Provincias values (23,4,&#8217;\u00a0Tacna\u00a0,\u00a0Candarave\u00a0,\u00a0Jorge Basadre\u00a0,\u00a0Tarata&#8217;)<br>insert into Provincias values (24,3,&#8217;\u00a0Tumbes\u00a0,\u00a0Zarumilla\u00a0,\u00a0Contralmirante Villar\u00a0&#8216;)<br>insert into Provincias values (25,4,&#8217;\u00a0Coronel Portillo\u00a0,\u00a0Atalaya\u00a0,\u00a0Padre Abad\u00a0,\u00a0Pur\u00fas&#8217;)<br>go<br><strong>El listado de los departamentos y sus provincias.<br><\/strong>select D.DepartamentosCodigo As &#8216;C\u00f3digo&#8217;, D.DepartamentosNombre As &#8216;Departamento&#8217;,<br>P.ProvinciasNombres As &#8216;Provincias&#8217;<br>from Departamentos As D<br>join Provincias As P on D.DepartamentosCodigo = P.DepartamentosCodigo<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_12.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_12-1024x678.png\" alt=\"\" class=\"wp-image-2459\" width=\"896\" height=\"592\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_12-1024x678.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_12-300x199.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_12-768x508.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_12-795x526.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_12.png 1094w\" sizes=\"auto, (max-width: 896px) 100vw, 896px\" \/><\/a><\/figure>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Crear una vista con el resultado<\/strong><\/p>\n\n\n\n<p>Create or alter view vistaDepartamentosProvincias<br>As<br>select D.DepartamentosCodigo As &#8216;C\u00f3digo&#8217;, D.DepartamentosNombre As &#8216;Departamento&#8217;,<br>P.ProvinciasNombres As &#8216;Provincias&#8217;<br>from Departamentos As D<br>join Provincias As P on D.DepartamentosCodigo = P.DepartamentosCodigo<br>go<\/p>\n\n\n\n<p><strong>Para poder usar Coalesce se va a crear una consulta separando las provincias en filas, para esto se usar\u00e1 la funci\u00f3n String_Split (<a href=\"https:\/\/manualsqlserver.com\/?p=2242\" target=\"_blank\" rel=\"noreferrer noopener\">Ver Funci\u00f3n String_Split<\/a>)<\/strong><br>select V.C\u00f3digo As &#8216;C\u00f3digo&#8217;,<br>V.Departamento As &#8216;Departamento&#8217;,<br>value As Provincia<br>from vistaDepartamentosProvincias As V<br>cross apply string_split(V.Provincias,&#8217;,&#8217;)<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_13.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_13.png\" alt=\"\" class=\"wp-image-2460\" width=\"615\" height=\"1005\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_13.png 443w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_13-184x300.png 184w\" sizes=\"auto, (max-width: 615px) 100vw, 615px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Usando Coalesce para filtrar las provincias de una departamento.<br>Las provincias del departamento de La Libertad.<br><\/strong>Declare @Columna nvarchar(max)<br>Select @Columna = Coalesce(@Columna,\u00bb) + \u00bb\u00bb+ D.Provincia+\u00bb\u00bb+ &#8216;,&#8217;<br>from (select V.C\u00f3digo As &#8216;C\u00f3d. Departamento&#8217;,<br>V.Departamento As &#8216;Departamento&#8217;,<br>value As Provincia<br>from vistaDepartamentosProvincias As V<br>cross apply string_split(V.Provincias,&#8217;,&#8217;)) As D<br>where D.Departamento = &#8216;La Libertad&#8217;<br>SELECT substring(@Columna,1,len(@Columna)-1)<br>go<br><strong>El resultado se muestra en la siguiente imagen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_14.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_14-1024x141.png\" alt=\"\" class=\"wp-image-2461\" width=\"840\" height=\"115\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_14-1024x141.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_14-300x41.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_14-768x106.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_14-795x110.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/01\/ManualSQL_Coalesce_14.png 1103w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Usando la funci\u00f3n Coalesce En una base de datos es una buena pr\u00e1ctica que no existan valores Null, esto se puede evitar usando la restricci\u00f3n de tipo Default y desde la aplicaci\u00f3n el programador puede enviar un dato predeterminado en los campos que el usuario no ingrese valor. (Ver Crear tablas)<\/p><p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=2446\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":2447,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,8],"tags":[279,259],"class_list":["post-2446","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-funcionessql","category-programacion","tag-coalesce","tag-string_split","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2446"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2446\/revisions"}],"predecessor-version":[{"id":2462,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2446\/revisions\/2462"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/2447"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2446"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2446"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}