在 MySQL 查询中,是否可以使 "o" 读为“0”,反之亦然?
In a MySQL query is there anyway to make "o" read as "0" and vice versa?
我不太确定如何正确解释这一点,但我会尽力而为。我正在使用 ajax 根据文本输入字段过滤某些帖子。然后列出所有帖子,包括用户输入的字母和数字。非常基本的东西。
现在,我的客户想要添加 "Smart Search" 功能。基本上,如果用户输入“0123”,他们希望它列出所有标题包含“0123”和 "o123" 的帖子。 "s" 和“5”需要发生同样的事情。因此,如果用户键入“1234s”,它将列出所有包含“1234s”和“12345”的帖子。有办法吗?
这是我目前的情况,numberchar 是文本输入的名称
$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE `post_title` LIKE '".trim($_POST['numberchar'])."%' order by ID desc";
您可以使用 MySQL 的 REPLACE 或 PHP 的 str_replace
您可以在查询本身中使用 MySQL 的 REPLACE function to replace characters:
REPLACE('queryStringArgument', 'o', '0')
如果您希望在服务器上执行此操作,您也可以使用 PHP 的 str_replace:
$numberchar = isset($_POST['numberchar']) ? $_POST['numberchar'] : ""; // Get the POSTed value if it's set.
$fixedNumberchar = str_replace("o", "0", $numberchar);
$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE `post_title` LIKE '". $fixedNumberchar ."%' order by ID desc";
备注
你这可能不是个好主意;您应该捕获无效参数并通知用户他做错了什么。但这由你决定。
您需要将其更改为:
$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE REPLACE(`post_title`,'[a-zA-z]+','') LIKE '%".trim(preg_replace("[^0-9]","", $_POST['numberchar']))."%' order by ID desc";
删除所有字符,只允许数字,在开头添加 % 广告将允许 o1234
// Replace "o" with "0"
$numberchar = str_replace("o", "0", trim($_POST['numberchar']));
$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE `post_title` LIKE '". $numberchar ."%' order by ID desc";
我不太确定如何正确解释这一点,但我会尽力而为。我正在使用 ajax 根据文本输入字段过滤某些帖子。然后列出所有帖子,包括用户输入的字母和数字。非常基本的东西。
现在,我的客户想要添加 "Smart Search" 功能。基本上,如果用户输入“0123”,他们希望它列出所有标题包含“0123”和 "o123" 的帖子。 "s" 和“5”需要发生同样的事情。因此,如果用户键入“1234s”,它将列出所有包含“1234s”和“12345”的帖子。有办法吗?
这是我目前的情况,numberchar 是文本输入的名称
$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE `post_title` LIKE '".trim($_POST['numberchar'])."%' order by ID desc";
您可以使用 MySQL 的 REPLACE 或 PHP 的 str_replace
您可以在查询本身中使用 MySQL 的 REPLACE function to replace characters:
REPLACE('queryStringArgument', 'o', '0')
如果您希望在服务器上执行此操作,您也可以使用 PHP 的 str_replace:
$numberchar = isset($_POST['numberchar']) ? $_POST['numberchar'] : ""; // Get the POSTed value if it's set.
$fixedNumberchar = str_replace("o", "0", $numberchar);
$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE `post_title` LIKE '". $fixedNumberchar ."%' order by ID desc";
备注
你这可能不是个好主意;您应该捕获无效参数并通知用户他做错了什么。但这由你决定。
您需要将其更改为:
$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE REPLACE(`post_title`,'[a-zA-z]+','') LIKE '%".trim(preg_replace("[^0-9]","", $_POST['numberchar']))."%' order by ID desc";
删除所有字符,只允许数字,在开头添加 % 广告将允许 o1234
// Replace "o" with "0"
$numberchar = str_replace("o", "0", trim($_POST['numberchar']));
$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE `post_title` LIKE '". $numberchar ."%' order by ID desc";