Scripts en T-SQL



Durante mis actividades como desarrollador he construido algunos scripts que pueden resultar de utilidad a otros proyectos, ya sea directamente implementados o como parte de las consultas para verificar información y resultados. Algunos pueden resultar muy básicos pero espero sirvan de utilidad a más de uno.

Este micro-script hace uso de SUBSTRING, CHARINDEX, REPLACE y LEN para actualizar los valores de un campo de tipo VARCHAR, cambiando una abreviación por la palabra completa, además de reemplazar los pares de caracteres que sustituyen a las letras acentuadas debido a discordancia entre conjuntos de caracteres, por las letras acentuadas correctamente.

UPDATE  [Tabla]
SET     [Campo] = REPLACE (
                    REPLACE (
                      SUBSTRING (
                        [Campo], 1, CHARINDEX (@cadBuscada, [Campo]) - 1
                      ) + @cadNueva + 
                      SUBSTRING (
                        SUBSTRING ( [Campo], CHARINDEX (@cadBuscada, [Campo]), LEN ([Campo])),
                        CHARINDEX (' ',
                          SUBSTRING ([Campo], CHARINDEX (@cadBuscada, [Campo]), LEN ([Campo]))
                        ),
                        LEN (SUBSTRING ([Campo], CHARINDEX (@cadBuscada, [Campo]), LEN ([Campo])))
                      ), 'ó', 'ó'
                    ), 'é', 'é'
                  )
WHERE   [Campo] like @str1 or [Campo] like @str2
  

El siguiente script sirve para obtener la especificación de un SP o una vista, utilizando únicamente el nombre del mismo, sin necesidad de saber el esquema.

Posiblemente no devuelva lo esperado si es que existen más de un SP o una vista que tengan el mismo nombre pero diferente esquema.

DECLARE @nombreSP NVARCHAR(MAX) = N'spNombreDelSP',
        @nombreCompletoSP NVARCHAR(MAX);

SELECT  @nombreCompletoSP = s.name + '.' + o.name
FROM    sys.objects o, sys.schemas s
WHERE   o.schema_id = s.schema_id AND o.name = @nombreSP

EXEC    sp_helptext @nombreCompletoSP

Este script devuelve el conjunto de tablas cuyo nombre contenga la palabra especificada.

DECLARE @nombre NVARCHAR(MAX) = N’LaTabla’, @nombreCompleto NVARCHAR(MAX);
SELECT  s.name + ’.’ + o.name
FROM    sys.objects o, sys.schemas s
WHERE   o.schema_id = s.schema_id AND o.name like ’ %’ + @nombre + ’ %’ AND Type = ’U’

Para encontrar todas las apariciones en tablas con un campo que contenga la cadena indicada

SELECT  s.name + ’.’ + o.name Name, c.name [Column]
FROM    Sys.columns c join sys.objects o
ON      c.object_id = o.object_id join sys.schemas s
ON      o.schema_id = s.schema_id
WHERE   o.type = ’U’ and c.name like ’ %NombreParcialDeCampo%’
ORDER   BY Name

Iré agregando algunos scripts que me han resultado útiles, por lo que estén atentos a esta publicación

Tus comentarios me ayudan a mejorar el contenido de mis publicaciones para que sean de mayor utilidad e interés. Agradezco tu aportación.

Comentarios

Entradas populares