Mostrando entradas con la etiqueta SQL Server. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQL Server. Mostrar todas las entradas

domingo, 19 de junio de 2022

SQL Server Order by random, Ordenamiento aleatorio

 Order by random sql

Requiero ordenar una consulta de manera aleatoria, es decir que siempre me regrese un resultado diferente:











La función NEWIDdevuelve un uniqueidentifiertipo de datos que representa un GUID de 16 bytes. Por lo tanto, cada nuevo valor devuelto por la funciónNEWID será prácticamente único.


1
2
3
4
SELECT
    NombreId
FROM nombre
ORDER BY NEWID()

lunes, 21 de febrero de 2022

Calcular fechas entre rango de fechas sql server

 declare @feIni  datetime ='2022-02-21'

declare @fefin datetime ='2022-03-21'


CREATE TABLE #TablaTemporal (FECHA DATE);

WHILE(@feIni<@fefin) 
BEGIN
    INSERT INTO #TablaTemporal
    SELECT  @feIni
SET @feIni = DATEADD(DD,1,@feIni)
END


select * from #TablaTemporal

martes, 4 de enero de 2022

Crear un esquema SQL

Crea un esquema en la base de datos actual. La transacción CREATE SCHEMA también puede crear tablas y vistas dentro del nuevo esquema y establecer permisos GRANT, DENY o REVOKE en esos objetos.

 CREATE SCHEMA schema_name_clause [ <schema_element> [ ...n ] ]  
  
<schema_name_clause> ::=  
    {  
    schema_name  
    | AUTHORIZATION owner_name  
    | schema_name AUTHORIZATION owner_name  
    }  
  
<schema_element> ::=   
    {   
        table_definition | view_definition | grant_statement |   
        revoke_statement | deny_statement   
    }  

  1.   En el Explorador de objetos, conéctese a una instancia de Motor de base de datos.
  2. En la barra Estándar, haga clic en Nueva consulta.
Ejemplo:

 CREATE SCHEMA History;

lunes, 3 de enero de 2022

Sql Server Eliminar registros de una tabla de forma rapida

 En algunas ocasiones es necesario borrar muchos registros de una tabla, pero al tener índices o al estar en uso el borrado puede demorar muchísimo tiempo.

con esta solución va borrando por partes haciendo un ciclo, se detiene cuando termina de borrar.


InicioBloque:
delete top (20) [TRABLE] where   [CONDITION]
IF @@ROWCOUNT > 0 
GOTO InicioBloque

lunes, 27 de diciembre de 2021

SQL Server INSERTAR varias filas

 Para agregar varias filas a una tabla a la vez, utilice la siguiente forma de INSERTdeclaración:


INSERT INTO table_name (column_list)
VALUES
    (value_list_1),
    (value_list_2),
    ...
    (value_list_n);


En esta sintaxis, en lugar de utilizar una única lista de valores, utiliza varias listas de valores separados por comas para la inserción.

El número de filas que puede insertar a la vez es de 1000 filas utilizando esta forma de INSERTdeclaración. Si desea insertar más filas, debería considerar el uso de varias INSERTdeclaraciones BULK INSERT o una tabla derivada.

Tenga en cuenta que esta INSERTsintaxis de filas múltiples solo se admite en SQL Server 2008 o posterior.

viernes, 15 de enero de 2021

Cambiar propietario base de datos SQL Server

 Requiere permiso TAKE OWNERSHIP en la base de datos. Si el nuevo propietario tiene un usuario correspondiente en la base de datos, requiere el permiso IMPERSONATE en el inicio de sesión, en caso contrario, requiere el permiso CONTROL SERVER en el servidor.


Ejemplo;

use [mybd]
EXEC sp_changedbowner 'sa'


jueves, 14 de enero de 2021

CASE de SQL Server

 La sentencia CASE de sql server pasa por condiciones y devuelve un valor cuando se cumple la primera condición (como una sentencia IF-THEN-ELSE). Entonces, una vez que una condición es verdadera, dejará de leer y devolverá el resultado. Si no se cumple ninguna condición, devuelve el valor de la cláusula ELSE.

Si no hay una parte ELSE y ninguna condición es verdadera, devuelve NULL.


CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE result
END;



Ejemplos

select 

SEXO = CASE WHEN Empleado.codsexo = 'F' THEN '2' ELSE '1' END

from Empleado


-----

select 
[ESTADO CIVIL]= CASE  WHEN  EM.codEstadoCivil = 'S'  THEN '1'
WHEN  EM.codEstadoCivil = 'C'  THEN '2'   
                 WHEN  EM.codEstadoCivil = 'D'  THEN '3'
                 WHEN  EM.codEstadoCivil = 'M' THEN '4'
                                         WHEN  EM.codEstadoCivil = 'V'  THEN '5' 
                                                 END
from Empleado EM

martes, 27 de octubre de 2020

FOR LOOP SQL Server

Ciclo while sql server 


Sintaxis

DECLARE @count INT = 0;

WHILE @count < cnt_total
BEGIN [sentencia] SET @count = @count + 1;
END;
Ejemplo:
DECLARE @count  INT = 0;

WHILE @count  < 1000
BEGIN
   select @count
   SET @count  = @count  + 1;
END;


lunes, 17 de agosto de 2020

Diferencias entre varchar y nvarchar en SQL Server

 ¿Cuál es la diferencia entre los dos, y cuán importante es la diferencia?


VARCHAR es la abreviación de variable-length character string.   Es una cadena de caracteres de texto que puede ser tan grande como el tamaño de página para la tabla de la base de datos. Los campos de tipo Varchar o NVarchar son de almacenamiento variable

El tamaño almacenado dependerá del valor que se quiere guardar, el número de caracteres sólo configura el tamaño máximo que este campo puede almacenar. 

Configuramos una tabla de la siguiente forma:

CampoVariable1 varchar(10),
CampoVariable2 nvarchar(10)

El tamaño almacenado dependerá del valor que se quiere guardar, el número de caracteres sólo configura el tamaño máximo que este campo puede almacenar. En el caso del CampoVariable1 el tamaño máximo será de 10 bytes, y en el caso del CampoVariable2 el tamaño máximo será de 20 bytes.

El tamaño de una página de tabla es 8.196 bytes, y no hay una fila de una tabla puede ser tener de 8.060 caracteres. Esto a su vez limita el tamaño máximo de un VARCHAR a 8000 caracateres

La "N" en NVARCHAR significa uNicode. Esencialmente, NVARCHAR no es más que un VARCHAR que soporta caracteres de dos bytes.  Lo que representara una longitud máxima de 4000 caracteres. Lo que significa tener la capacidad de almacenar caracteres especiales en este tipo de datos.  La diferencia clave entre los dos datos.

Resumamos las diferencias:
  1.          VARCHAR máxima longitud permitida: 8000 caracteres.  NVARCHAR máxima longitud permitida: 4000 caracteres.
  2.         VARCHAR almacena caracteres de un byte de tipo ASCII Extendido.  NVARCHAR Capacidad de almacenar caracteres de dos bytes.  Caracteres Unicode.
3.  Por lo anterior el almacenamiento en disco será el doble en NVARCHAR que VARCHAR.


jueves, 5 de marzo de 2020

SQL Server sp_refreshview para actualizar la definición de vista

Si la definición SQL de una vista en SQL Server está desactualizada debido a que los objetos dependientes han sido alterados , es necesario actualizar la definición de la vista usando procedimiento del sistema sp_refresh SQL Server.

Si los administradores de la base de datos de SQL Server o los desarrolladores de Transact-SQL han creado objetos de la Vista SQL que no están delimitados por esquemas, si el objeto de la base de datos dependiente ( tabla , vista o función) de la vista SQL cambia, la definición de la vista SQL Server también debería ser actualizado.

La sintaxis sql del procedimiento almacenado sp_refreshview SQL Server es la siguiente:


EXECUTE sp_refreshview [ @viewname = ] 'viewname' -- sp_refreshview syntax
Execute sp_refreshview 'MySampleSQLView' -- as an example

lunes, 30 de diciembre de 2019

Error cursor with the name 'namecur' already exists SQLSERVER

Está utilizando un cursor global que se definirá cada vez que llame a este procedimiento y le dé el mismo error.

Definir un cursor local. Simplemente ponga la palabra clave LOCALdespués de CURSOR:



declare namecur CURSOR LOCAL FOR
...

jueves, 25 de abril de 2019

Buscar texto en sps SQL server

Buscar un texto en todos los sps de una base de datos:



declare @search varchar(50)
SET @search = 'CatalogoInformacion'

SELECT
ROUTINE_NAME
,ROUTINE_DEFINITION
FROM
INFORMATION_SCHEMA.ROUTINES
WHERE
ROUTINE_DEFINITION LIKE '%' + @search + '%'
--AND ROUTINE_TYPE ='PROCEDURE'
ORDER BY
ROUTINE_NAME

domingo, 17 de febrero de 2019

Ver campo nvarchar(max) en consulta SQL

Problema:

Tengo un campo en una tabla de sql el cual es nvarchar(max), al hacer un select y copiar el campo, el campo no muestra el total de la informacion, se muestra incompleto, incluso copiandolo y pegandolo en un archivo, el  dato del campo tiene aproximadamente 750 mil caracteres.

Solución.

hago un select al campo:


Seleccione Save Result As..





Guardar como archivo. txt

El archivo mostrara la cadena completa...

miércoles, 15 de agosto de 2018

Función SQL Server para calcular días hábiles,Contador De Dias Habiles

Sp Contador De Días Hábiles

CREATE FUNCTION [dbo].[DifDias](@fch_ini datetime, @fch_fin datetime)
RETURNS int
AS
BEGIN
DECLARE @TotalDias  DECIMAL(6,1) --Con esta variable calculamos cuantos dias "normales" hay en el rango de fechas
DECLARE @DiasNoLaborables INT --Con esta variable acumulamos los dias no laborables
DECLARE @DiasFeriados SMALLINT --Total dias feriados entre el rango de fechas
DECLARE @Cnt INT --esta variable nos sirve de contador para saber cuando lleguemos al ultimo dia del rango
DECLARE @EvalDate DATETIME --esta variable es la que comparamos para saber si el dia que esta calculando es sábado o domingo

SET @Cnt = 0
SET @DiasNoLaborables = 0
--Calculamos cuantos dias normales hay en el rango de fechas
SELECT @TotalDias = DATEDIFF(HOUR,@fch_ini,@fch_fin) / 24.0--Se maneja diferencia de dias a nivel horas
SELECT @DiasFeriados = COUNT(1) FROM Configuracion.DiasFestivos WHERE feFestiva >= @fch_ini AND feFestiva <= @fch_fin
WHILE @Cnt < @TotalDias
BEGIN
    SELECT @EvalDate = @fch_ini + @Cnt
    IF datepart(dw,@EvalDate) = 6 OR datepart(dw,@EvalDate) = 7
    BEGIN
        SET @DiasNoLaborables = @DiasNoLaborables + 1
    END
    SET @Cnt = @Cnt + 1
END
RETURN cast((@TotalDias - @DiasNoLaborables - @DiasFeriados) as int)
END

martes, 14 de agosto de 2018

Rellenar cadena con caracteres a la izquierda SQL SERVER



CREATE FUNCTION [Configuration].[fun_RellenaCadena] (@Cadena NVARCHAR(20), @CaraterRelleno AS NVARCHAR(1), @LongitudFinal INT)

RETURNS NVARCHAR(20) AS 
BEGIN

       WHILE (LEN(@Cadena) < @LongitudFinal)
       BEGIN
         SET @Cadena = @CaraterRelleno + @Cadena
       END

RETURN @Cadena

END



-------------------------

Ejemplo de ejecucion
select [Configuration].[fun_RellenaCadena] ('555','X',6)

Resultado:
XXX555