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
--
-- =======================================================================
-- 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!
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'
Suscribirse a
Entradas [Atom]