PHP MySQL查询只在一些字母上然后返回最短的字符串?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP MySQL查询只在一些字母上然后返回最短的字符串?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3360字,纯文字阅读大概需要5分钟。
内容图文
![PHP MySQL查询只在一些字母上然后返回最短的字符串?](/upload/InfoBanner/zyjiaocheng/905/3a081af17d8f4d21a74225683e9809af.jpg)
我有例如,我的数据库表中的以下数据…
A Bridge Too Far
A Bridge Too Far trilogy
A bridge Too Far the sequel
Goodfellas the return of Pesci
Goodfellas
Goodfellas 2
Goodfellas 3
等等也将有一些独特的条目以及更多如上所述
我想要显示的只是:
A Bridge Too Far
Goodfellas
基本上摆脱原始标题周围的额外信息,这是不需要的.
我想我可能需要在空格之前检查第一个单词中的多个字母然后如果超过5个字母与下一行匹配,如果它确实然后继续将行添加到列表中然后当它吐出最短的吐出?如果第一个单词小于5个字母,那么移到第二个单词(只是试图避免,::他们::这个::他们等等)
从SQL / PHP的角度来看,我试图从逻辑上思考这个问题,但是我还在努力,它甚至可能吗?
所有帮助赞赏.
达伦
菲尔::谢谢 – 您的版本适用于sqlize但我的版本不适用!
这是我正在使用的实际代码:
$sql = mysql_query("create temporary table movies (name VARCHAR(255))",$db);
$sql2 = mysql_query("create temporary table movies2 (name VARCHAR(255))",$db);
$sql3 = mysql_query("insert into movies(name) select title from PRprod_FILMS where genre = 'Action Adventure'",$db);
$sql4 = mysql_query("insert into movies2(name) select name from movies",$db);
// both tables movies and movies2 identical now
$sql5 = mysql_query("
SELECT * FROM movies m
WHERE NOT EXISTS (
SELECT 1 FROM movies2 m2
WHERE m.name LIKE CONCAT(m2.name, '%')
AND LENGTH(m2.name) < LENGTH(m.name)) order by name
",$db);
while ($sql55 = mysql_fetch_array($sql5)){ // aa
echo $sql55[name]."<br />";
} // close aa
mysql_close();
我仍然得到以下内容:
2 Fast 2 Furious
2 Fast 2 Furious Bluray 2003
2 Fast 2 Furious Box Set DVD
2 Fast 2 Furious DVD
2 Fast 2 Furious HD DVD 2003 US Import
Bad Boys Collectors Edition DVD Wide Screen
Bad Boys DVD
Bad Boys DVD 1983
Bad Boys DVD 1995
Bad Boys DVD Superbit Wide Screen
我只想要的地方:2 Fast 2 Furious&&坏男孩DVD
有任何想法吗?
达伦
再次感谢Phil,但我仍然得到:
310 To Yuma BluRay
310 To Yuma DVD 2007
310 To Yuma DVD Wide Screen
我想另一种说出我想要的方式是:
如果前5个字符(obv.包含空格)匹配,一旦它们停止匹配,就会删除剩下的内容并打印结果.现在,我还必须再次小心这个“宿醉”&& “宿醉2”是合情合理的!
可能?
达伦
另外,我刚看了一些样品,看看我是否可以研究如何进步并注意到……
如果我只是打印标题,原始列表的样本显示:
0091 Vol3 DVD
02 in H20 A SelfHelp Course on Breathing in Swimmi... // missing
0430 DVD // missing
1 2 3 4 5 DVD // missing
1 Night In Paris DVD // missing
10 Best Fitness DVD // missing
10 Best Fitness Five Discs DVD // missing
10 DVD 1979 // missing
10 Hollywood Leading Men DVD
并在查询之后:
0091 Vol3 DVD
10 Hollywood Leading Men DVD
注意“0091 Vol3 DVD”&& “十大好莱坞男主角DVD”
解决方法:
试试这个…
SELECT `title` FROM `PRprod_FILMS` m
WHERE `genre` = 'Action Adventure'
AND NOT EXISTS (
SELECT 1 FROM `PRprod_FILMS` m2
WHERE m.`title` LIKE CONCAT(m2.`title`, '%')
AND LENGTH(m2.`title`) < LENGTH(m.`title`)
AND m2.`genre` = m.`genre`
)
ORDER BY `title`;
这是一个例子 – http://www.sqlize.com/HIaf4zr69L(使用两个相同的临时表,因为你不能在MySQL中多次引用相同的临时表)
更新
使用你的样本集,我得到了
A Bridge Too Far
Goodfellas
2 Fast 2 Furious
Bad Boys Collectors Edition DVD Wide Screen
Bad Boys DVD
310 To Yuma BluRay
310 To Yuma DVD 2007
310 To Yuma DVD Wide Screen
明显重复的原因是因为它只消除了较短字符串的扩展.解释…
你消除了“Bad Boys DVD 1983”和“Bad Boys DVD 1995”,因为它们是“Bad Boys DVD”的扩展. “Bad Boys Collector Edition DVD Wide Screen”仍保留在结果集中,因为它不是任何其他模式的扩展.如果您添加了“坏男孩”,那么您将消除除此之外的所有内容.
内容总结
以上是互联网集市为您收集整理的PHP MySQL查询只在一些字母上然后返回最短的字符串?全部内容,希望文章能够帮你解决PHP MySQL查询只在一些字母上然后返回最短的字符串?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。