我想使用按位运算附加给定数字中的任何静态单个数字 设静态数为1,
If the number is
2 => 12
31 => 131
24 => 124
11 => 111
是否可以这样做??
这里为什么我严格按位方式,我想保持为整数值。
答案 0 :(得分:1)
如果dbms支持基本数学函数(例如Oracle),则可以使用:
SELECT NUMBER + Power(10, Floor(Log(10, NUMBER)) + 1)
FROM TABLE;
如果不是,你就可以逃脱一个字符串技巧:
SELECT TO_NUMBER('1' || TO_CHAR(NUMBER))
FROM TABLE;
(使用Oracle)
答案 1 :(得分:0)
按位运算符在十进制数字上效果不佳,因为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;
}
(关于注意溢出的常见警告)。