Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中将字符串转换为int_Mysql_Sql - Fatal编程技术网

在MySQL中将字符串转换为int

在MySQL中将字符串转换为int,mysql,sql,Mysql,Sql,我有一个列,其名称如下: Ernest Hemingway Jackson Pollock 我想将它们转换成数字,并将它们存储在INT字段中。可能得到每个字母在字母表中的位置或类似的东西,从而得到一个数字: 23764283456 23984623746 有什么函数可以做这样的事情吗?我不介意INT的长度,也不介意结果是一个数字还是另一个数字。重要的是,每次我将函数应用于名称时,结果都是相同的 谢谢 试试这个: crc32(“欧内斯特·海明威”) 将始终为您提供2479642411请尝试以下

我有一个列,其名称如下:

Ernest Hemingway
Jackson Pollock
我想将它们转换成数字,并将它们存储在INT字段中。可能得到每个字母在字母表中的位置或类似的东西,从而得到一个数字:

23764283456
23984623746
有什么函数可以做这样的事情吗?我不介意INT的长度,也不介意结果是一个数字还是另一个数字。重要的是,每次我将函数应用于名称时,结果都是相同的

谢谢

试试这个:

crc32(“欧内斯特·海明威”)

将始终为您提供
2479642411

请尝试以下操作:

crc32(“欧内斯特·海明威”)


将始终为您提供
2479642411

正如@Gordon_Linoff在评论中所说,大量数据不能存储在
int

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

您可以使用
HEX

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

正如@Gordon_Linoff在评论中所说,大量数据不能存储在
int

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

您可以使用
HEX

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

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

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个字节太大,因为有符号/无符号整数差异会导致某些输入的浮点,并且浮点实际上不能用完全确定性转换为整数。

这是一个单向散列,但有一个重要的问题:整数应该在平台上表示

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个字节太大,因为有符号/无符号整数差异会导致某些输入的浮点值,并且浮点值实际上不能用完美的确定性转换为整数。

选择字段,将(子字符串索引(字段“--”,-1),无符号整数)转换为num 从桌子上 按数量排序

选择字段,将(子字符串_索引(字段'-',1),无符号整数)转换为num 从桌子上
按数量排序

您指定的数字(如23764283456)对于MySQL中的
int
字段来说太长。所以你的问题有点不清楚。不过,我可能会建议您研究散列。您可能还想解释为什么要这样做。您想如何处理该号码?因为您的需求可以通过将每个输入转换为数字
1
来解决。谢谢!我之所以要这样做,是因为我需要为数据库中人物的图像命名文件,最好的方法是将人物的名字转换成一个数字,并用这个数字将文件命名为34823793642.jpg您指定的数字(例如23764283456)对于MySQL中的
int
字段来说太长了。所以你的问题有点不清楚。不过,我可能会建议您研究散列。您可能还想解释为什么要这样做。您想如何处理该号码?因为您的需求可以通过将每个输入转换为数字
1
来解决。谢谢!我之所以要这样做,是因为我需要为数据库中人物的图像命名文件,最好的方法是将人物的名字转换成一个数字,并将这个数字命名为34823793642。JPG一些输入会在结果中产生a-F字符。@GrasDouble例如??尽管,在32位平台上,一半的结果将为负值,因此您可能必须转换为绝对值:
abs(crc32('foobar'))
。32位和64位平台之间会有差异。@GrasDouble您完全正确。但是,我只是回答了这个问题,因为OP只是希望将字符串一致地转换为数值。
SELECT abs(crc32(name))FROM person
works。谢谢有些输入会在结果中产生A-F字符。@GrasDouble例如??但是,在32位平台上,一半的结果是负数,因此您可能必须转换为绝对值:
abs(crc32('foobar'))
。32位和64位平台之间会有差异。@GrasDouble您完全正确。但是,我只是回答了这个问题,因为OP只是希望将字符串一致地转换为数值。
SELECT abs(crc32(name))FROM person
works。谢谢