在MySQL中将字符串转换为int

时间:2017-07-23 12:51:16

标签: mysql sql

我的列名为:

Ernest Hemingway
Jackson Pollock

我想将它们转换为数字并将它们存储在INT字段中。也许得到字母表中的每个字母的位置或类似的东西,产生一个数字:

23764283456
23984623746

有什么功能可以做这样的事吗?我不介意INT的长度,或者结果是一个或多个数字。重要的是每次我将函数应用于名称时,结果都是一样的。

谢谢!

4 个答案:

答案 0 :(得分:2)

试试这个:

crc32('Ernest Hemingway');

将始终为您提供2479642411

答案 1 :(得分:1)

正如@Gordon_Linoff在评论中所说,大数字不能存储在int类型的字段中

但我将向您展示如何将字符串转换为字符的ascii

您可以使用HEX

SELECT HEX('test')
+-------------+
| HEX('test') |
+-------------+
| 74657374    |
+-------------+

答案 2 :(得分:1)

这是一个单向哈希,但有一个重要的问题:整数应该可以在平台上表示。

PHP代码,假设需要32位兼容性:

$hash = sha1('Ernest Hemingway');

// last 6 characters, represent 3 bytes
$hash = substr($hash, -6);

$result = hexdec($hash); // integer: 1331016

请记住,这具有非常低的熵:2 ^ 24 = 16777216种可能性


4个字节太大,因为有符号/无符号整数差异会导致某些输入浮动,并且浮点数实际上不能被转换为具有完美确定性的整数。

答案 3 :(得分:1)

SELECT字段,CONVERT(SUBSTRING_INDEX(字段,' - ', - 1),UNSIGNED INTEGER)AS num 从表 ORDER BY num;