首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >select * like with masked compare

select * like with masked compare
EN

Stack Overflow用户
提问于 2015-03-31 05:10:50
回答 2查看 33关注 0票数 0

我必须在数据库中搜索like $string%s。A '?‘在引用字符串中表示任何字符,因此必须忽略此字符,但所有其他字符必须匹配。

引用$string ='abcd?efg'将与$stringb ='abcdXefg'$stringc = 'abcd1efg'匹配。mySQL如何“选择...”看起来像?

代码语言:javascript
复制
$string = 'abcd?efg';    
$row = $mysqli->query("SELECT * FROM $table WHERE String LIKE '$string'");
$result = $row->fetch_assoc();
print_r( json_encode($result) );
EN

回答 2

Stack Overflow用户

发布于 2015-03-31 05:32:24

您可以像这样使用正则表达式:

代码语言:javascript
复制
$string = 'abcde?efg';
$searchGroup = explode('?', $string);    
$row = $mysqli->query("SELECT * FROM $table WHERE String REGEXP '^" . $searchGroup[0].".".$searchGroup[1]."$'"); // starts with abcde and ends with efg and allows one character between the groups.

这将获得两个组之间的一个字符,它可以是任何字符。在docs中:

“。匹配任何单个字符。

票数 0
EN

Stack Overflow用户

发布于 2015-03-31 05:52:01

LIKE中的1个字符的通配符是_,因此使用str_replace?替换为_

代码语言:javascript
复制
$like_string = str_replace('?', '_', $string);
$stmt = $mysqli->prepare("SELECT * FROM $table WHERE String LIKE ?");
$stmt->bind_param("s", $like_string);
$stmt->execute();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29356365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档