Estoy intentando hacer una cadena con un valor de 64 bits (bigint) en MySQL. Conozco la función MD5(), que devuelve un hash de 128 bits como una cadena binaria. Me encantaría tomar los 64 bits inferiores o superiores de este resultado. Sin embargo, no puedo descifrar cómo pasar de un tipo de cadena binaria a un tipo numérico de cualquier tipo. ¿Alguna sugerencia?¿Convertir cadena binaria a bigint en MySQL?
8
A
Respuesta
14
Utilice la función CONV()
para convertir el hash MD5 de la base 16 a la base 10 y CAST
para convertirlo en un número:
select cast(conv(substring(md5(id), 1, 16), 16, 10) as unsigned integer) from SomeTable;
2
CREATE FUNCTION dbo.HexStrToVarBinary(@hexstr varchar(8000))
RETURNS varbinary(8000)
AS
BEGIN
DECLARE @hex char(1), @i int, @place bigint, @a bigint
SET @i = LEN(@hexstr)
set @place = convert(bigint,1)
SET @a = convert(bigint, 0)
WHILE (@i > 0 AND (substring(@hexstr, @i, 1) like '[0-9A-Fa-f]'))
BEGIN
SET @hex = SUBSTRING(@hexstr, @i, 1)
SET @a = @a +
convert(bigint, CASE WHEN @hex LIKE '[0-9]'
THEN CAST(@hex as int)
ELSE CAST(ASCII(UPPER(@hex))-55 as int) end * @place)
set @place = @place * convert(bigint,16)
SET @i = @i - 1
END
RETURN convert(varbinary(8000),@a)
END
GO
+0
Nice! esperaba que hubiera algo integrado. –
+0
Ahora al revés por favor: D: @ :) –
Cuestiones relacionadas
- 1. Convertir cadena binaria de Erlang a minúscula
- 2. Convertir cadena hexadecimal (hex) a una cadena binaria
- 3. Convertir cadena binaria en número entero
- 4. bigint en mysql
- 5. ¿Cómo echo un tipo a bigint en MySQL?
- 6. Java convertir una cadena HEX en una BigInt
- 7. Cómo convertir valor de cadena binaria a decimal
- 8. convertir cadena de texto a representación hexadecimal o representación binaria
- 9. Convertir BIGINT SIN FIRMAR en INT
- 10. MySQL: bigint Vs int
- 11. Convertir el valor hexadecimal en bigint
- 12. Conversión de cadena binaria a ASCII correspondiente
- 13. Convertir hexadecimal a binario en MySQL
- 14. En python, ¿cómo convertir una cadena ascii hexadecimal a una cadena binaria interna sin procesar?
- 15. Convertir nvarchar a bigint en el servidor SQL 2008
- 16. Convertir DateTime Valor en cadena en MySQL
- 17. cómo convertir una cadena a la fecha en mysql?
- 18. Cadena binaria al número entero
- 19. F # tubería hacia adelante para convertir de int a bigint
- 20. Convierte un bigint en una cadena en Go
- 21. Microsoft SQL Server 2005 fundir bigint en la cadena
- 22. Rendimiento MySQL del campo varchar único frente a bigint único
- 23. Cómo convertir una cadena binaria a un entero de base 10 en Java
- 24. problema para convertir una cadena binaria (64 bits) a decimal (C++ en iPhone)
- 25. cómo convertir JSON a cadena
- 26. Servidor SQL Conversión de entero a cadena binaria
- 27. ¿Cómo guardo un BIGINT en MySQL usando PDO?
- 28. ¿Cómo convertir una cadena binaria de 16 bits de longitud fija a una de longitud fija?
- 29. Convertir la representación binaria del número de la cadena a int -Javascript
- 30. ¿Convertir int a cadena?
Bien, eso es lo que estoy buscando. Creo que no necesito el elenco, o quiero lanzar a bigint, pero la función conv() era realmente lo que me estaba perdiendo. –
Una última nota. Estaba accediendo a este valor numérico como largo en Java. Los tipos enteros de Java están firmados, y el resultado de conv() siempre es positivo, lo que significa que se desborda en algunos casos. Para aquellos que usan esto como un largo firmado, necesitas el yeso, y el casting para 'firmado' es el truco. –