php – 选择具有字符串最长子字符串的行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 选择具有字符串最长子字符串的行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1128字,纯文字阅读大概需要2分钟。
内容图文
![php – 选择具有字符串最长子字符串的行](/upload/InfoBanner/zyjiaocheng/796/71789dbfefc0441ba22fcc7ec1f80670.jpg)
让我根据下面的例子描述问题.
让我们说有一个字符串“abc12345”(可能是任何!!!)并且有一个表mytable,其列为mycolumn of varchar(100).
有些行以最后一个字符5结尾.
有些行以最后一个字符45结尾.
有些行以最后一个字符345结尾
没有以最后一个字符2345结尾的行.
在这种情况下,应选择这些行:
SELECT * FROM mytable WHERE mycolumn LIKE "%345"
这是因为“345”是“abc12345”中最长的右子串,它至少出现一次,作为mycolumn列中至少一个字符串的右子串.
任何想法如何在一个查询中写入?
谢谢.
解决方法:
这是一种蛮力方法:
select t.*
from (select t.*,
dense_rank() over (order by (case when mycolumn like '%abc12345' then 1
when mycolumn like '%bc12345' then 2
when mycolumn like '%c12345' then 3
when mycolumn like '%12345' then 4
when mycolumn like '%2345' then 5
when mycolumn like '%345' then 6
when mycolumn like '%45' then 7
when mycolumn like '%5' then 8
end)
) as seqnum
where mycolumn like '%5' -- ensure at least one match
from t
) t
where seqnum = 1;
然后这激发了这样的事情:
select t.*
from (select t.*, max(i) over () as maxi
from t join
(select str, generate_series(1, length(str)) as i
from (select 'abc12345' as str) s
) s
on left(t.mycolumn, i) = left(str, i)
) t
where i = maxi;
内容总结
以上是互联网集市为您收集整理的php – 选择具有字符串最长子字符串的行全部内容,希望文章能够帮你解决php – 选择具有字符串最长子字符串的行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。