Esta es sencillita, para hacer que un string tenga un ancho fijo y relleno las posiciones de la izquierda con ceros. En este caso consiguiendo que la cadena tenga una longitud de 6
select REPLACE(STR(campo, 6), SPACE(1), '0') from table
Esta es sencillita, para hacer que un string tenga un ancho fijo y relleno las posiciones de la izquierda con ceros. En este caso consiguiendo que la cadena tenga una longitud de 6
select REPLACE(STR(campo, 6), SPACE(1), '0') from table
Últimamente ando bastante liado y no he podido postear nada pero después de tener que pegarme con un Navision que bloqueaba una tabla y tiraba mi aplicación, he tenido que volver para poner la consulta de marras que he tenido que usar para listar los bloqueos de la base de datos en cuestión:
SELECT OBJECT_NAME(P.object_id) AS TableName, L.resource_type, L.resource_description FROM sys.dm_tran_locks AS L INNER JOIN sys.partitions AS P ON L.resource_associated_entity_id = P.hobt_id
PD: A ver si ahora que me estoy liberando un poco de trabajo, puedo volver a postear con algo más de regularidad
Uno operación típica dentro de un procedimiento es comprobar si existe un registro para actualizarlo y en caso contrario insertarlo. Esto al principio lo hacía de la siguiente forma:
IF EXISTS ( SELECT campo FROM tabla WHERE id = @id ) UPDATE tabla SET campo = @campo WHERE id = @id ELSE INSERT INTO tabla ( id, campo ) VALUES ( @id, @campo )
Pero había que estar metiendo transacciones así que empecé a usar la opción de hacer la actualización directamente y comprobar las columnas afectadas, en el caso no haberlas, hacia la inserción.
UPDATE tabla SET campo = @campo WHERE id = @id IF @@ROWCOUNT = 0 INSERT INTO tabla ( id, campo ) VALUES ( @id, @campo )
Con esto seguimos teniendo que meter transacciones pero es más eficiente.
Pero desde la versión 2008 de SQL Server, podemos usar el merge que no se si será más efectivo de cara a rendimiento pero sí que quedaremos más “pofesionales”.
MERGE INTO tabla USING (VALUES (@id, @campo)) AS tmp (id, campo) ON campo.id = tmp.id WHEN MATCHED THEN UPDATE SET campo = tmp.campo WHEN NOT MATCHED THEN INSERT (id, campo) VALUES (tmp.id, tmp.campo);