Sto tentando di eseguire l'hashing di una stringa su un valore a 64 bit (bigint) in MySQL. Sono a conoscenza della funzione MD5(), che restituisce un hash a 128 bit come stringa binaria. Sarei felice di prendere solo i 64 bit in basso o in cima a questo risultato. Tuttavia, non riesco a capire come ottenere da un tipo di stringa binaria a un tipo numerico di qualsiasi tipo. Qualche indicazione?Converti la stringa binaria in bigint in MySQL?
8
A
risposta
14
Utilizzare la funzione CONV()
per convertire l'hash MD5 da base 16 a base 10 e CAST
per convertirlo in un numero:
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
Nizza! Speravo che ci fosse qualcosa di costruito. –
+0
Ora il contrario per favore: D: @ :) –
Problemi correlati
- 1. Converti un bigint in una stringa in Go
- 2. SQL Server Converti numero intero in stringa binaria
- 3. come convertire la stringa binaria in decimale?
- 4. Converti la stringa in float?
- 5. MySQL: bigint Vs int
- 6. Mysql Bigint VS Varchar
- 7. Converti rappresentazione binaria di numero da stringa a int -Javascript
- 8. Come posso trasmettere un tipo a un bigint in MySQL?
- 9. Converti JsDefined in stringa
- 10. Converti stringa in JsonArray
- 11. Converti SVGSVGElement in stringa
- 12. Converti stringa in stringa esadecimale in C#
- 13. Converti la stringa JSON in Lua Table?
- 14. Converti la stringa latin1 in utf8?
- 15. Converti stringa in SocketAddr
- 16. Converti stringa in Uri
- 17. Converti stringa in CLLocationCoordinate2D
- 18. Converti System.Array in stringa []
- 19. Converti stringa in LatLng
- 20. Converti int in stringa?
- 21. Converti stringa in char
- 22. Converti stringa in System.IO.Stream
- 23. Converti unichar in stringa?
- 24. Come convertire 'stringa binaria' in stringa normale in Python3?
- 25. MySQL: Converti INT in DATETIME
- 26. Converti stringa di formato binario in int, in C
- 27. Verificare la lunghezza della stringa binaria?
- 28. Tipi in MySQL: bigint (20) vs Int (20)
- 29. mysql altera int colonna in bigint con chiavi esterne
- 30. In PHP, cos'è una stringa binaria (b'xxxx ')?
Bello, questo è quello che sto cercando. Penso di non aver bisogno del cast, o di voler trasmettere a bigint, ma la funzione conv() era davvero ciò che mi mancava. –
Un'ultima nota. Stavo quindi accedendo a questo valore numerico come un lungo in Java. I tipi interi Java sono firmati, e il risultato di conv() è sempre positivo, il che significa che in alcuni casi trabocca. Per chi usa questo come un long firmato, hai bisogno del cast, e il casting per "firmato" fa il trucco. –