php - MySQL如何在虚拟字段定义中实现条件

标签 php mysql

我正在使用下面的 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/

相关文章:

mysql - gem install mysql2 出错

c# - 使用某些列插入/更新行并保留其他列的值

php - 如何使用 CakePHP APP 类从 URL 加载 XML 文件?

php - ZF2 教程专辑 PHPUnit 测试因未定义属性而失败:AlbumTest\Model\AlbumTableTest::$controller

javascript - 是否元刷新重定向 "Secure"

php - 更改php中数组中的最后一个键名

php - HTACCESS : Dynamic rewrite url with multiple variables

php - Mysql 图片库,包含下一个和上一个

mysql - 这个节目里有什么

mysql - 尝试编辑mysql中的my.cnf文件但不起作用