将字符串转换/编码为数字

时间:2014-07-06 20:36:28

标签: mysql sql

我正在寻找将字符串编码/转换/转换为查询中的数字。与ASCII()类似,但它只返回最左侧的字符到其相对代码。此主题是否有任何可用的功能或方法? - 实际上是可解码的

例如

METHOD("test-string") # Outputs: 25478596325417

4 个答案:

答案 0 :(得分:2)

这适用于最多8个字符的字符串。

编码:

SELECT CONV(HEX(string), 16, 10);

解码:

SELECT UNHEX(CONV(number, 10, 16));

MySQL支持最长64位的整数,此方​​法每个字符使用8位。因此,使用此方法,您可以在整数中存储最多64/8 = 8个字符。

答案 1 :(得分:1)

如果十六进制对你的应用程序来说足够好,那么函数hex()可以达到你想要的效果。例如,您可以尝试:

select hex('abc'), hex('abcd')

这适用于任意字符串。如果这不起作用,那么也许有办法将十六进制表示转换为适当的。

顺便说一句,unhex()将返回原始字符串。

答案 2 :(得分:0)

试试这个。

SELECT CAST(HEX(your_string) AS DECIMAL);

我承认,我没有对它进行测试,但它应该有效。

修改

其他一些数据库(例如Oracle,DB2,PostgreSQL)具有函数TRANSLATE()。不幸的是MySQL不支持它。据我所知,目前MySQL中没有替代此功能。所以使用嵌套的REPLACE()可能是目前唯一的选择。

答案 3 :(得分:0)

您可以使用

 COMPRESS('ABC) 

获取不是字符串的二进制字符串。它可以压缩任意大小。但目前尚不清楚你要对这个号码做什么 - 或者你需要如何存储它。