Database 使用逐位运算在整数值中追加任意数字
我想使用位运算在给定的数字中附加任何静态的单个数字。 让静态数为1Database 使用逐位运算在整数值中追加任意数字,database,bit-manipulation,Database,Bit Manipulation,我想使用位运算在给定的数字中附加任何静态的单个数字。 让静态数为1 If the number is 2 => 12 31 => 131 24 => 124 11 => 111 有可能吗。。? 在这里,我为什么严格要求按位平均值,我希望保持为整数值 如果您的dbms支持基本的数学函数,例如Oracle,您可以使用: SELECT NUMBER + Power(10, Floor(Log(10, NUMBER)) + 1) FROM TABLE;
If the number is
2 => 12
31 => 131
24 => 124
11 => 111
有可能吗。。?
在这里,我为什么严格要求按位平均值,我希望保持为整数值 如果您的dbms支持基本的数学函数,例如Oracle,您可以使用:
SELECT NUMBER + Power(10, Floor(Log(10, NUMBER)) + 1)
FROM TABLE;
如果不是这样,你可以玩一个字符串技巧,比如:
SELECT TO_NUMBER('1' || TO_CHAR(NUMBER))
FROM TABLE;
使用Oracle按位运算符对十进制数不起作用,因为2的幂次和10的幂次不能很好地匹配。我不知道数据库标记在这里的用途,这似乎完全无关 如果希望函数将1添加到任意数字的左边,如您所示,可以使用以下算法:
def prefixWithOne (n):
if n == 0:
return 10
addNum = 1
testNum = n
while testNum > 0:
testNum = int (testNum / 10)
addNum = addNum * 10
return addNum + n
例如,以下C代码将执行此操作:
unsigned int prefixWithOne (unsigned int n) {
unsigned int testNum = n;
unsigned int addNum = 1;
if (n == 0) return 10;
while (testNum > 0) {
testNum /= 10;
addNum *= 10;
}
return addNum + n;
}
还有关于注意溢出的常见警告。对不起,您能更好地解释一下您的限制吗?你可以用整数运算来计算。是的,整数运算也可以。…@pavun\u cool你用的是哪种DBMS?