gpt4 book ai didi

PHP/MySQL 使用变量在字符串中搜索结果

转载 作者:行者123 更新时间:2023-11-29 13:56:38 27 4
gpt4 key购买 nike

我有一个查询,但未提供结果:

$name = "John Smith";

$query = "SELECT * FROM my_table WHERE lname LIKE '%$name%' AND fname LIKE '%$name%'";

数据库中的 lname 将列为 Smith数据库中的 fname 可能会列为 John S。

有些条目的名字后面附有中间名首字母,有些则没有。

此外,名称会作为一个字符串拉入我查询此信息的页面上,而不是名字和姓氏字符串。现有代码的限制。

所以我试图在字符串 $name 中搜索姓氏和名字。我想我做错了。这可能吗?或者还有其他方法可以做到这一点吗?

最佳答案

这个怎么样(如果我理解正确的话):

SELECT *
FROM my_table
WHERE '$name' like concat(fname,' %')
AND '$name' like concat('% ',lname)

SQL Fiddle Demo

要搜索 fname 字段,它会在搜索的全名后连接一个“%”。为了搜索 lname 字段,它会在全名之前连接一个“%”。

编辑:马里奥的好评论略有不同,使用REGEXP:

SELECT *, CONCAT_WS(' ', fname, lname)
FROM my_table
WHERE CONCAT_WS(' ', fname, lname) REGEXP REPLACE('$name',' ', '.*')

More Fiddle

既然你提到你不能分解参数(为什么?),这使用替换来相应地替换空格。

关于PHP/MySQL 使用变量在字符串中搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749941/

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