社区首页 >问答首页 >MySQL AlphaID函数

MySQL AlphaID函数
EN

Database Administration用户
提问于 2016-07-15 05:04:19
回答 1查看 84关注 0票数 0

在尝试优化一些查询以避免使用PHP时,我尝试将最初在PHP中创建的两个例程转换为在其AlphaID表示中编码整数,然后从字符串转换为整数。

让我们深吸一口气,然后才能认为这是一个堆栈溢出问题,我在发帖前已询问

我试图将它们移植到独自一人,但是有一些问题:

  1. 在PHP中,原始例程能够正确编码32位整数(2147483647)的最大可能值,但由于某种原因,我的端口提前停止了。我无法进一步调试,但在2000000000之后的某个时刻,我不再编码了。
  2. 在函数工作的那一点上,编码总是“先行一”,例如,对整数2进行编码,而不是返回预期的baaac,从而产生baaad,这相当于编码时的整数3。

我有建议使用AES_ENCRYPT()及其对应方解密,但这不是目的,因为作为项目的要求,我真正需要的是在字母和数字的文本表示中显示更好的主密钥(仅!)

我还建议使用散列函数,我测试了MD5()、SHA1()和SHA2()的所有组合,但是它们都会产生很长的字符串,这在web环境中很难显示。

当然,如果能够在数据库中直接进行这种转换,我就可以将INT改为BIGINT,并有多达9,223,372,036,854,775,807记录。

那么,是否有一种方法可以用MSQL将整数表示为AlphaID?或者类似的东西,我愿意接受建议。

如果不是内置的东西,也许这可以被视为非主题,我如何才能修复我所做的实现呢?

EN

回答 1

Database Administration用户

发布于 2016-07-15 06:07:23

使用内置函数进行此操作的最简单方法是将数字转换为基数36:

代码语言:javascript
代码运行次数:0
复制
mysql> select conv(9223372036854775807,10,36);
+---------------------------------+
| conv(9223372036854775807,10,36) |
+---------------------------------+
| 1Y2P0IJ32E8E7                   |
+---------------------------------+
1 row in set (0.00 sec)

mysql>

这允许使用0-9A-Z,是CONV()支持的最大基础.

皈依:

代码语言:javascript
代码运行次数:0
复制
mysql> select conv('1Y2P0IJ32E8E7', 36, 10);
+-------------------------------+
| conv('1Y2P0IJ32E8E7', 36, 10) |
+-------------------------------+
| 9223372036854775807           |
+-------------------------------+
1 row in set (0.00 sec)

mysql>

CONV 这里的文档。

如果你不知道基地是如何工作的,请看这里

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/143997

复制
相关文章
matlab vargin_matlab varargin
那么在这个函数里,varargin就是一个cell数组,它包含了用户输入的参数。下面是一个例子:
全栈程序员站长
2022/11/16
9240
matlab在axis,matlab中axis的用法
>> axis([0 2*pi -0.9 0.9]) 图 5.1.3 使用了图形修饰的 plot 函数绘制的正弦曲线 5.1.3 图形的比较显示 在一般默认的情况下,MATLAB 每次使用 plot ……
全栈程序员站长
2022/09/06
1.9K0
java浅拷贝和深拷贝的区别_js中深拷贝和浅拷贝的区别
浅拷贝:对基本类型的数据是值拷贝,对String类型的拷贝也可以看作是值拷贝,这里不做讨论;
全栈程序员站长
2022/11/15
8890
java浅拷贝和深拷贝的区别_js中深拷贝和浅拷贝的区别
c浅拷贝和深拷贝的区别_js中深拷贝和浅拷贝的区别
先考虑一种情况,对一个已知对象进行拷贝,编译系统会自动调用一种构造函数——拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函数。
全栈程序员站长
2022/09/27
7240
c浅拷贝和深拷贝的区别_js中深拷贝和浅拷贝的区别
JS中数组的深拷贝和浅拷贝
变量保存的是一个指针,存放在栈内存中,指针指向一个位置,这个位置就是存放在堆内存引用类型的值
杨肆月
2019/08/15
2.4K0
JS中数组的深拷贝和浅拷贝
Python 中浅拷贝和深拷贝的区别
CVPR 2021 相关论文、代码 、解读和demo整理,同时为了方便下载论文,已把部分论文上传到上面了,欢迎小伙伴们 star 支持一波!
AI算法与图像处理
2021/04/21
9770
Python 中浅拷贝和深拷贝的区别
python中浅拷贝和深拷贝
由结果看,PHP中array_push方法和array_object的结果也不同。
老高的技术博客
2022/12/27
4080
JavaScript中浅拷贝和深拷贝的区别和实现
要理解 JavaScript中浅拷贝和深拷贝的区别,首先要明白JavaScript的数据类型。JavaScript有两种数据类型,基础数据类型和引用数据类型。
Javanx
2019/09/05
6400
JavaScript中浅拷贝和深拷贝的区别和实现
JavaScript中浅拷贝和深拷贝的区别和实现
要理解 JavaScript中浅拷贝和深拷贝的区别,首先要明白JavaScript的数据类型
tianyawhl
2019/04/04
5350
JavaScript中浅拷贝和深拷贝的区别和实现
深拷贝与浅拷贝以及写时拷贝
假设B复制了A,当修改A时,看B是否会发生变化。如果B也跟着变了,说明这是浅拷贝;如果B没变,那就是深拷贝。
Jasonangel
2021/05/28
6640
C++中的深拷贝和浅拷贝介绍
对于基本类型的数据以及简单的对象,它们之间的拷贝非常简单,就是按位复制内存。例如:
芯动大师
2023/09/18
4610
C++中的深拷贝和浅拷贝介绍
matlab如何使用循环语句_matlab中循环语句怎么写
clc clear a=1; m=3; for i=1:m %理解此处的m不是向量,是循环时的某一个固定值 b(i)=a*i %得到的b值保留前一个循环中计算的值。是一个随着i变化的向量,loop1时向量中有1个元素;loop2时有2个元素,分别是loop1中值和loop2中的值。这种情况下,不会覆盖loop1中参数。 c=a*i %得到循环某个值的具体值。是一个元素,loop2会覆盖loop1中元素 d(3)=a*i %d(3)表示其中包含3个元素,若不够则用0填。固定为一个有3个元素的向量,元素不够是用0填,会覆盖loop1中元素。 end
全栈程序员站长
2022/09/27
6.2K0
浅谈JS中对象的深拷贝和浅拷贝
浅拷贝和深拷贝的'深浅'主要针对的是对象的‘深度’,常见的对象都是'浅'的,也就是对象里的属性就是单个的属性,而'深'的对象是指一个对象的属性是另一个对象,也就是对象里面嵌套对象,就像嵌套函数一样。 为什么要使用深拷贝和浅拷贝呢? 如果现有var obj1 = {...}这个对象,想要复制对象obj1,一贯的做法就是obj2 = obj1,这时虽然obj2拥有了obj1的所有属性,但obj2却不是自由的,因为它的改动会影响到obj1,obj1的改动也会影响到obj2,这不是我们所希望的,所以要用到深拷贝和浅
小胖
2018/06/27
6.8K2
在MATLAB中RSA加密
[Modulus, PublicExponent, PrivateExponent] = GenerateKeyPair;
万木逢春
2019/05/10
1.8K0
并发容器之写时拷贝的 List 和 Set
对于一个对象来说,我们为了保证它的并发性,通常会选择使用声明式加锁方式交由我们的 Java 虚拟机来完成自动的加锁和释放锁的操作,例如我们的 synchronized。也会选择使用显式锁机制来主动的控
Single
2018/01/04
7360
并发容器之写时拷贝的 List 和 Set
Objective-C中的深拷贝和浅拷贝
        在Objective-C中对象之间的拷贝分为浅拷贝和深拷贝。说白了,对非容器类的浅拷贝就是拷贝对象的地址,对象里面存的内容仍然是一份,没有新的内存被分配。对非容器类的深拷贝就是重写分配一块内存,然后把另一个对象的内容原封不动的给我拿过来。对容器类的深拷贝是对容器中的每个元素都进行拷贝,容器类的浅拷贝是对容器里的内容不进行拷贝,两个容器的地址是不同的,但容器里的所装的东西是一样的,在一个容器中修改值,则另一个浅拷贝的容器中的值也会变化。所以对非容器类看对象是否为深拷贝还是浅拷贝就得看对象的内存
lizelu
2018/01/11
1.1K0
Python中浅拷贝和深拷贝的区别总结与
单层浅拷贝 import copy a = 1 # 不可变数据类型 copy_a = copy.copy(a) print(id(a),id(copy_a)) # 内存地址相同 a = [1,2] # 可变数据类型 copy_a = copy.copy(a) print(id(a),id(copy_a)) # 内存地址不相同 单层深拷贝 import copy a = 1 # 不可变数据类型 copy_a = copy.deepcopy(a) print(id(a),id(copy_a)) #
py3study
2020/01/21
5120
这6个命令助你玩转matlab自定义函数
函数对于matlab的重要性这里就不在赘述了(你了解matlab局部函数吗?)。matlab自带的函数虽包罗万象、但并不可能揽括一切,在实际编程过程中往往还需要编程者根据实际问题编写适合解决当下问题的函数,这也就是所谓的自定义函数。
巴山学长
2019/11/01
7930
PHP中引用的详解(引用计数、写时拷贝)
PHP中引用意味着用不同的名字访问同一个变量内容,引用不是C的指针(C语言中的指针里面存储的是变量的内容,在内存中存放的地址),是变量的另外一个别名或者映射。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。 最接近的比喻是 Unix 的文件名和文件本身――变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的紧密连接或者wins的快捷方式。
黄规速
2022/04/14
3.7K0
点击加载更多

相似问题

varargin在matlab中的应用

12

利用varargin的MATLAB fminsearch

13

MATLAB中的Varargin不适合我

17

PHP在写数组和对象上的拷贝

113

将varargin和nargin从Matlab转换为Python

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档