gpt4 book ai didi

php - MySQL - 将 LIKE 运算符与 UNHEX() 函数结合使用

转载 作者:行者123 更新时间:2023-12-05 02:45:34 27 4
gpt4 key购买 nike

我正在尝试将 MySQL 函数 UNHEX() 与运算符 LIKE 一起使用,但我无法获得 $result_2_expected 的预期结果。

我做错了什么?
我正在尝试以下方法,但都没有成功:

  • 喜欢 UNHEX('%4272756365%')
  • 喜欢'%UNHEX('4272756365')%'
  • 喜欢'%UNHEX(4272756365)%'

Equal 运算符的经验(成功):

$name_1 = bin2hex("Bruce Wayne"); //4272756365205761796e65
$query_1 = "SELECT `NAME` FROM `USERS_TABLE` WHERE `NAME` = UNHEX('{$name_1}')"; // UNHEX('4272756365205761796e65')


$result_1 = [0][NAME] => "Bruce Wayne"; // Success

使用 LIKE 运算符的经验(失败):

$name_2 = bin2hex("Bruce"); // 4272756365
$query_2 = "SELECT `NAME` FROM `USERS_TABLE` WHERE `NAME` LIKE UNHEX('%{$name_2}%')"; // UNHEX('%4272756365%')

$result_2 = [] => null; // Fail

$result_2_expected = [0][NAME] => "Bruce Wayne"; [1][NAME] => "Bruce Willis"; [2][NAME] => "Bruce Springsteen"; // Expected as Success

最佳答案

您的问题是您将通配符放入了对 UNHEX 的调用中,而不是在其外部连接它们,这使得 UNHEX 返回 NULL,这将始终导致 LIKE 返回 false

改变

LIKE UNHEX('%{$name_2}%')

LIKE  CONCAT('%', UNHEX('{$name_2}'), '%')

您的代码将按预期工作。或者,您可以按照@Akina 在评论中的建议进行操作,并将对 UNHEX 的调用中的 % 符号替换为其十六进制表示形式 (25 ) 并将您的代码替换为

LIKE UNHEX('25{$name_2}25')

关于php - MySQL - 将 LIKE 运算符与 UNHEX() 函数结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65918118/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com