我正在寻找将字符串编码/转换/转换为查询中的数字。与ASCII()
类似,但它只返回最左侧的字符到其相对代码。此主题是否有任何可用的功能或方法? - 实际上是可解码的
例如 :
METHOD("test-string") # Outputs: 25478596325417
答案 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)
获取不是字符串的二进制字符串。它可以压缩任意大小。但目前尚不清楚你要对这个号码做什么 - 或者你需要如何存储它。