我正在使用下面的PHP功能来计算PHP中字符串的校验和。需要XOR在32和64位PHP平台上产生相同的值。
我想在MySQL选择具有相同值的查询中创建一个虚拟字段。选择ABS(CRC32(UI_DATA((作为来自USER_DATA的校验和,但我不知道如何在Select语句中实现IF零件以使其与PHP函数完全兼容。
10x
function checksum ($orig_id) {
$crc= abs (crc32($orig_id));
if( $crc & 0x80000000){
$crc ^= 0xffffffff;
$crc += 1;
}
return $crc;
}
SELECT IF(@crc & 0x80000000, @crc ^ 0xffffffff, @crc + 1)
FROM (SELECT @crc := ABS(CRC32('your_value'))) v
- https://dev.mysql.com/doc/refman/5.7/en/bit-functions.html