Database 使用逐位运算在整数值中追加任意数字

Database 使用逐位运算在整数值中追加任意数字,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;

我想使用位运算在给定的数字中附加任何静态的单个数字。 让静态数为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;
如果不是这样,你可以玩一个字符串技巧,比如:

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?