【问题标题】:MySQL SUBSTR LOCATE multi-search-stringsMySQL SUBSTR LOCATE 多搜索字符串
【发布时间】:2021-03-04 03:45:34
【问题描述】:

棘手的问题,盯着屏幕大约一个小时后,我的大脑一片混乱。

我正在尝试查询我的数据库以在 image_link 列中返回字符串的第一部分(例如,http://www.example.com)。

我已经为image_link 包含.com 作为字符串一部分的所有行进行了管理...但是我需要代码更加通用,因此它会搜索.net 和@987654328 之类的代码@也是。

原以为某种嵌套的 REPLACE 可能会起作用,但当我尝试应用它时它没有意义 - 我被卡住了。

查询生成器代码:

$builder->select("SUBSTRING(image_link, 1, LOCATE('.com', image_link) + 3) AS domain");

具有所需结果的示例字符串:

http://www.example.com/brands/567.jpg // http://www.example.com
https://www.example.org/photo.png     // https://www.example.org
http://example.net/789                // http://example.net

热烈欢迎任何帮助/建议!

【问题讨论】:

  • 你能提供几个输入以及你想要的确切输出吗?
  • @Tim Biegeleisen 修改谢谢!
  • 你的 MySQL 版本是多少?
  • @Tim Biegeleisen 版本信息:4.9.7
  • 那是你的客户端版本还是 MySQL 版本?请运行此查询:SELECT ROW_NUMBER() OVER (ORDER BY 1)。它执行没有错误?

标签: mysql replace substring substr locate


【解决方案1】:
SELECT ... , 
       SUBSTRING_INDEX(image_link, '/', 3) domain
FROM test;

或者,如果协议可能不存在,那么

SELECT ... , 
       SUBSTRING_INDEX(image_link, '/', CASE WHEN LOCATE('//', image_link) THEN 3 ELSE 1 END) domain
FROM test;

fiddle

【讨论】:

    猜你喜欢
    • 2013-03-14
    • 2011-06-28
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2014-12-06
    • 2011-03-26
    相关资源
    最近更新 更多