我正在使用下面的 PHP 函数来计算 PHP 中字符串的校验和。在 32 位和 64 位 php 平台上需要进行异或才能产生相同的值。
我想在 MySQL 选择查询中创建一个具有相同值的虚拟字段。 SELECT ABS(CRC32(ui_data)) As checksum FROM 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
关于php - MySQL如何在虚拟字段定义中实现条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44412787/