SQL Server - Simular el operador ">>" de C# en Sql Server

   
Vista:

Simular el operador ">>" de C# en Sql Server

Publicado por Crs L (3 intervenciones) el 21/03/2018 21:02:28
La descripción del operador ">>" propio de C# indica:
El operador de desplazamiento a la derecha ( >>) desplaza su primer operando a la derecha en la cantidad de bits especificada por su segundo operando.

algo asi como

1
var resp = (-1000 >> 3)

resulta: resp = -125

Cómo podría simular la funcionalidad de ese operador en Sql Server..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Simular el operador ">>" de C# en Sql Server

Publicado por Isaias (3724 intervenciones) el 21/03/2018 23:44:38
¿Y que hace >> en C#?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Simular el operador ">>" de C# en Sql Server

Publicado por Cesar (14 intervenciones) el 22/03/2018 00:26:54
Hola.

Dicho operador lo que hace internamente es, convertir a binario el numero a la izquierda del operador, y recorre/elimina de dicho numero, el numero de caracteres indicados a la derecha del operador.

En este caso:

1
1000 decimal = 1111101000 binario

Se recorren/eliminan los 3 caracteres a la derecha:

1
1111101 binario = 125 decimal

Al final solo le pasa el signo.

Lo que tendrias que hacer en SQL es:

- Convertir el valor a binario (no se como se haga en SQL)
- Convertir ese resultado a varchar
- Hacer un substring por la longitud del texto menos 3 caracteres
- Volver a convertir el resultado a binario
- Volver a convertir a decimal.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Simular el operador ">>" de C# en Sql Server

Publicado por Isaias (3724 intervenciones) el 22/03/2018 16:58:09
Convertir un valor a binario

1
2
3
4
5
6
7
DECLARE @myval decimal (4, 0);
SET @myval = 255;
SELECT CONVERT(decimal(4,0), CONVERT(binary(5), @myval)) result, CONVERT(binary(5), @myval)
 
result                                  HEX
--------------------------------------- ------------
255                                     0x04000001FF

- Hacer un substring por la longitud del texto menos 3 caracteres

Puede utilizar la opcion LEFT(VALOR, 3) -- Toma los ultimos 3 caracteres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad