我在 mysql 表中有一个 varchar 字段,我想在 php 中搜索字符串,它现在是字母数字,它只显示数字结果。
例如,如果我搜索111那么它应该显示匹配111( 111A, 111B, 111C)的结果。如果我搜索111A那么它应该显示111A的结果。如何实现这一点。
我在 mysql 表中有一个 varchar 字段,我想在 php 中搜索字符串,它现在是字母数字,它只显示数字结果。
例如,如果我搜索111那么它应该显示匹配111( 111A, 111B, 111C)的结果。如果我搜索111A那么它应该显示111A的结果。如何实现这一点。
似乎您的情况与LIKE的做法相反。看起来您已经使用了 LIKE,并且不应该将它用于任何精确匹配。查询可能看起来像
SELECT myField from MyTable where myValue = '111'
SELECT myField from MyTable where myValue = '111A'
达到相反的效果
你可以使用喜欢
SELECT myField from MyTable where myValue LIKE '111%'
这适用于像 111Anything 这样的字符串
SELECT myField from MyTable where myValue LIKE '%111%'
这适用于像 Anything111Anything 这样的字符串
SELECT myField from MyTable where myValue LIKE '%111'
这适用于像 Anything111 这样的字符串
php 中的搜索模式:来自http://www.php.net/manual/en/function.preg-grep.php
<?php
$subject = array("111A", "111B", "222");
$pattern = "/^111/";
$matches = preg_grep($pattern, $subject);
print_r($matches);
?>
而不是LIKE
你可以使用REGEXP
从111开始
SELECT myField from MyTable where myValue REGEXP `^111`;
以111 结尾
SELECT myField from MyTable where myValue REGEXP `111$`;
以111 开始,以 111 结束
SELECT myField from MyTable where myValue REGEXP `^111$`;