Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 对Bits参数执行或/和操作_Mysql_Bit - Fatal编程技术网

Mysql 对Bits参数执行或/和操作

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;

我试图对传递给函数的参数执行位或运算。所以我写了下面的代码。语句“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为基数的整数,然后一起或。哟。