La vida de un DBA, Basis y Bedel en Puerto Rico
2010/02/21
  SQL Server left pad with zeros function

Funcion en SQL Server para ajustar un string a la derecha, llenandolo a la izquierda con ceros.

if object_id ( 'fnLeftPadWithZeros', 'FN' ) is not null
   drop function fnLeftPadWithZeros
go

create function fnLeftPadWithZeros(@strInput varchar(max), @IntLenght smallint)
   returns varchar(max)
as
begin
   if @strInput is not null
   begin
      if len(@strInput) <= @IntLenght
      begin
         set @strInput = replicate('0', @IntLenght - len(ltrim(rtrim(@strInput)))) +
                         @strInput
      end
   end
   return @strInput
end
go

-- PRUEBA DE LA FUNCION
declare @Text varchar(256)
set @Text = '1'
select Original = @Text
select SpacesRemoved = dbo.fnLeftPadWithZeros(@Text, 10)
go

--

 
  Oracle's TRANSLATE function in SQL Server

-- =======================================================================
-- Author : Manuel Daponte
-- Created: 2009-10-28
-- Descrip:
--
--    Copia barata de la funcion translate de Oracle
--    Al string @expr le busca si contiene alguno de los caracteres
--    del @from y los reemplaza por el caracter en la misma del @to
--
--    Ejemplo:
--       translate('Mañana será mía', 'áéíóúñ', 'aeiou~')
--    Retornara:
--       Ma~ana sera mia
-- =======================================================================

use Exencion
go

create function translate (
   @expr  varchar(max),
   @from  varchar(50),
   @to    varchar(50)
)
returns varchar(max)
as
begin
   declare @len_expr  smallint  -- largo de la expresion donde se haran los reemplazos
   declare @len_from  smallint  -- largo del string con los caracteres a reemplazar
   declare @len_to    smallint  -- largo del string con los caracteres de reemplazo

   -- averiguamos los largos de los strings
   select @len_expr = len(@expr), @len_from = len(@from), @len_to = len(@to)

   -- no tenemos nada que cambiar
   if @len_expr = 0 or @len_from = 0
      return @expr

   declare @char_from char(1)   -- para guardar cada caracter que queremos reemplazar
   declare @pos_from  smallint  -- en que posicion del @from esta el caracter que estamos procesando
   set @pos_from = 1

   -- recorremos el @from
   while (@pos_from <= @len_from)
   begin
      -- cual es el equivalente en @to de este caracter
      if @pos_from <= @len_to
      begin
         -- el caracter tiene un reemplazo
         set @expr = replace(@expr,
                             substring(@from, @pos_from, 1),
                             substring(@to, @pos_from, 1))
      end
      else
      begin
         -- el caracter no tiene un reemplazo
         set @expr = replace(@expr, substring(@from, @pos_from, 1), '')
      end

      -- pasamos al siguiente caracter del @from
      set @pos_from = @pos_from + 1
   end
   return @expr

end

...Y esta es la manera de ejecutarla:

select dbo.translate('Mañana será mía, Ñoño!', 'áéíóúñ', 'aeiou~')

Ma~ana sera mia, ~o~o!

select dbo.translate('Mañana será mía, Ñoño!', 'áéíóúñ', 'a')

Maana sera ma, oo!

 
  Como copiar un diagrama de la base de datos en SQL Server 2005

How to copy a database diagram in SQL Server 2005

-- que diagramas hay en esta base de datos
-- show database diagrams in current database
select *
  from sysdiagrams

-- copio el diagrama con un nuevo nombre
-- copy the diagram with a new name
insert into sysdiagrams (name, principal_id, version, definition)
   select 'NUEVO DIAGRAMA', principal_id, version, definition
     from sysdiagrams
    where name = 'DIAGRAMA'

 

Mi foto
Nombre: MADS
Ubicación: San Juan, Puerto Rico, United States
Archivos
mayo 2007 / febrero 2008 / marzo 2008 / abril 2008 / mayo 2008 / junio 2008 / julio 2008 / febrero 2010 / marzo 2010 /


Powered by Blogger

Suscribirse a
Entradas [Atom]