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'
El dichoso Vim no estaba poniendo los colores correctamente al editar archivos en los servidores con RHEL 5.2. Sin embargo, en RHEL 4.3 si funcionaba correctamente.
Después de darle MUCHAS vueltas, resulto que el culpable era un script ejecutado por /etc/profile. El script era /etc/profile.d/vim.sh
El contenido original de 5.2 está comentado y el código no comentado viene de 4.3:
#if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n "$ZSH_VERSION" ]; then
# [ -x /usr/bin/id ] || return
# [ `/usr/bin/id -u` -le 100 ] && return
# # for bash and zsh, only if no alias is already set
# alias vi >/dev/null 2>&1 || alias vi=vim
#fi
if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n "$ZSH_VERSION" ]; then
# for bash, pdksh and zsh, only if no alias is already set
alias vi >/dev/null 2>&1 || alias vi=vim
fi
Así que todo el problema era el dichoso alias a Vim.
Por alguna razón, en esta versión de Linux, los usuarios con ID menor o igual a 100 no tienen Vim.
Gracias a esta página y un flechazo adicional, pude resolver este cangrejo que tenía tiempo:
http://www.dbforums.com/archive/index.php/t-404559.html
Crear el linked server:
EXEC master.dbo.sp_addlinkedserver
@server = N'ADSI',
@srvproduct=N'Active Directory Services',
@provider=N'ADsDSOObject',
@datasrc=N'servidor-ad.dominio.local' -- servidor.dominio.com
Como la PC no está conectada al dominio, modificar el linked server y en security, poner
Be made with this security context
y colocar un usuario del dominio (dominio\usuario) y su password.
Después, ejecutar este query
select *
from openquery(ADSI,
'SELECT name
FROM ''LDAP://servidor-ad.dominio.local''
WHERE objectCategory = ''Person'' AND objectClass = ''user''
')
Estoy buscando unas lineas en varios archivos y tratando de ordenarlas por una fecha (yyyymmdd) que está entre las columnas 72 y 78. El problema que tengo con el comando sort es que no le consigo ningun parametro para esto. Siempre trata de buscar un delimitador entre columnas y en mis archivos no hay.
I'm looking for some lines in several files and trying to sort them by a date (yyyymmdd) that is between columns 72 and 78. The problem that I'm having with the sort command is that I don't find any parameter for that. The command is trying to find a delimiter between columns and ther's none in my files.
Al final, este es el comando que funcionó:
In the end, this is the command that worked:
$ grep --no-filename ^00010316 Header* | sort -t@ --key=1.72,1.78
Se indica que el delimitador es @ (no hay ninguno en los archivos) y se ordena por la primera columna, en las posiciones entre la 72 y 78.
We indicate that the delimiter is @ (there's no one in the files) and we sort by the first column, between positions 72 and 78.
Gracias a esta página y un flechazo adicional, pude resolver este cangrejo que tenía tiempo:
http://www.dbforums.com/archive/index.php/t-404559.html
Crear el linked server:
EXEC master.dbo.sp_addlinkedserver
@server = N'ADSI',
@srvproduct=N'Active Directory Services',
@provider=N'ADsDSOObject',
@datasrc=N'servidor-ad.dominio.local' -- servidor.dominio.com
Como la PC no está conectada al dominio, modificar el linked server y en security, poner
Be made with this security context
y colocar un usuario del dominio (dominio\usuario) y su password.
Después, ejecutar este query
select *
from openquery(ADSI,
'SELECT name
FROM ''LDAP://servidor-ad.dominio.local''
WHERE objectCategory = ''Person'' AND objectClass = ''user''
')
Gracias a esta página y un flechazo adicional, pude resolver este cangrejo que tenía tiempo:
http://www.dbforums.com/archive/index.php/t-404559.html
Crear el linked server:
EXEC master.dbo.sp_addlinkedserver
@server = N'ADSI',
@srvproduct=N'Active Directory Services',
@provider=N'ADsDSOObject',
@datasrc=N'servidor-ad.dominio.local' -- servidor.dominio.com
Como la PC no está conectada al dominio, modificar el linked server y en security, poner
Be made with this security context
y colocar un usuario del dominio (dominio\usuario) y su password.
Después, ejecutar este query
select *
from openquery(ADSI,
'SELECT name
FROM ''LDAP://gc-domain.guaynabo.local''
WHERE objectCategory = ''Person'' AND objectClass = ''user''
')
Gracias a esta página y un flechazo adicional, pude resolver este cangrejo que tenía tiempo:
http://www.dbforums.com/archive/index.php/t-404559.html
Crear el linked server:
EXEC master.dbo.sp_addlinkedserver
@server = N'ADSI',
@srvproduct=N'Active Directory Services',
@provider=N'ADsDSOObject',
@datasrc=N'servidor-ad.dominio.local' -- servidor.dominio.com
Como la PC no está conectada al dominio, modificar el linked server y en security, poner
Be made with this security context
y colocar un usuario del dominio (dominio\usuario) y su password.
Después, ejecutar este query
select *
from openquery(ADSI,
'SELECT name
FROM ''LDAP://servidor-ad.dominio.local''
WHERE objectCategory = ''Person'' AND objectClass = ''user''
')
Suscribirse a
Entradas [Atom]