Mysql 对Bits参数执行或/和操作
我试图对传递给函数的参数执行位或运算。所以我写了下面的代码。语句“SET result=arg1 | arg2”不起作用。我尝试了几种方法,但是没有达到正确的结果。我需要改变什么Mysql 对Bits参数执行或/和操作,mysql,bit,Mysql,Bit,我试图对传递给函数的参数执行位或运算。所以我写了下面的代码。语句“SET result=arg1 | arg2”不起作用。我尝试了几种方法,但是没有达到正确的结果。我需要改变什么 DELIMITER $$ CREATE FUNCTION BIT_OR(arg1 varchar(255),arg2 varchar(255)) RETURNS varchar(255) BEGIN DECLARE result varchar(255); BEGIN SET result = arg1 | arg2;
DELIMITER $$
CREATE FUNCTION BIT_OR(arg1 varchar(255),arg2 varchar(255)) RETURNS varchar(255)
BEGIN
DECLARE result varchar(255);
BEGIN
SET result = arg1 | arg2;
END;
RETURN result;
END $$
DELIMITER ;
select bitwise_OR(00011101,00001111); -- 12127 ( i am expecting 00011111 or 31 (decimal equivalent))
Try:
设置结果:=CONV(arg1,2,10)| CONV(arg2,2,10);--31(12月)
。当然,您可以选择b'00011101'| b'000011111'但是如果你想按自己的方式去做,你需要在调用函数时引用这些字符串,并使用@wchiquito指出的CONV()
,因为现在,这些字符串被处理为以10为基数的有符号整数,隐式转换为varchar,然后隐式转换回以10为基数的整数,然后一起或。youw.Try:设置结果:=CONV(arg1,2,10)| CONV(arg2,2,10);--31(12月)
。当然,您可以选择b'00011101'| b'000011111'但是如果你想按自己的方式去做,你需要在调用函数时引用这些字符串,并使用@wchiquito指出的CONV()
,因为现在,这些字符串被处理为以10为基数的有符号整数,隐式转换为varchar,然后隐式转换回以10为基数的整数,然后一起或。哟。