PHP MySQL查询只在一些字母上然后返回最短的字符串?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP MySQL查询只在一些字母上然后返回最短的字符串?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有例如,我的数据库表中的以下数据… @H_404_7@

@H_404_7@

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
@H_404_7@等等也将有一些独特的条目以及更多如上所述

@H_404_7@我想要显示的只是:

@H_404_7@

A Bridge Too Far
Goodfellas
@H_404_7@基本上摆脱原始标题周围的额外信息,这是不需要的.

@H_404_7@我想我可能需要在空格之前检查第一个单词中的多个字母然后如果超过5个字母与下一行匹配,如果它确实然后继续将行添加到列表中然后当它吐出最短的吐出?如果第一个单词小于5个字母,那么移到第二个单词(只是试图避免,::他们::这个::他们等等)

@H_404_7@从sql / PHP的角度来看,我试图从逻辑上思考这个问题,但是我还在努力,它甚至可能吗?

@H_404_7@所有帮助赞赏.

@H_404_7@达伦

@H_404_7@菲尔::谢谢 – 您的版本适用于sqlize但我的版本不适用!

@H_404_7@这是我正在使用的实际代码

@H_404_7@

$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();
@H_404_7@我仍然得到以下内容

@H_404_7@

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
@H_404_7@我只想要的地方:2 Fast 2 FurIoUs&&坏男孩DVD

@H_404_7@有任何想法吗?

@H_404_7@达伦

@H_404_7@再次感谢Phil,但我仍然得到:

@H_404_7@

310 To Yuma BluRay
310 To Yuma DVD 2007
310 To Yuma DVD Wide Screen
@H_404_7@我想另一种说出我想要的方式是:

@H_404_7@如果前5个字符(obv.包含空格)匹配,一旦它们停止匹配,就会删除剩下的内容并打印结果.现在,我还必须再次小心这个“宿醉”&amp;& “宿醉2”是合情合理的!

@H_404_7@可能?

@H_404_7@达伦

@H_404_7@另外,我刚看了一些样品,看看我是否可以研究如何进步并注意到……

@H_404_7@如果我只是打印标题,原始列表的样本显示

@H_404_7@

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
@H_404_7@并在查询之后:

@H_404_7@

0091 Vol3 DVD
10 Hollywood Leading Men DVD
@H_404_7@注意“0091 Vol3 DVD”&& “十大好莱坞男主角DVD”

解决方法

试试这个… @H_404_7@

@H_404_7@

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`;
@H_404_7@这是一个例子 – http://www.sqlize.com/HIaf4zr69L(使用两个相同的临时表,因为你不能在MysqL中多次引用相同的临时表)

@H_404_7@更新

@H_404_7@使用你的样本集,我得到了

@H_404_7@

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
@H_404_7@明显重复的原因是因为它只消除了较短字符串的扩展.解释…

@H_404_7@你消除了“Bad Boys DVD 1983”和“Bad Boys DVD 1995”,因为它们是“Bad Boys DVD”的扩展. “Bad Boys Collector Edition DVD Wide Screen”仍保留在结果集中,因为它不是任何其他模式的扩展.如果您添加了“坏男孩”,那么您将消除除此之外的所有内容.

脚本宝典总结

以上是脚本宝典为你收集整理的PHP MySQL查询只在一些字母上然后返回最短的字符串?全部内容,希望文章能够帮你解决PHP MySQL查询只在一些字母上然后返回最短的字符串?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。