mysql - 如何组合 MySQL 中的 LOCATE() 和 SUBSTR() 函数来创建新列?

标签 mysql

我有一个具有以下布局的数据库表,包含 100.000 个条目:

id | url 
1  | http://www.foo.com/ZedFe.htm
2  | www.foo.com/tEzqz.htm?q=eee
3  | foo.com/ZeeFg.htm
4  | http://www.foo.com/lkeiO
etc.

我现在想要第三列,其中包含每个 url 的 5 字符代码,但正如您所见,并非每个 url 的格式都相同。 在 php 中,我会这样做:

$id = substr($url, strpos($url,'foo.com/') + 8, 5);

这可以在 MySQL 中使用 LOCATE() 和 SUBSTR() 函数完成吗?

最佳答案

另一个我认为更常见的观点是,字符串操作是 SQL 中完全合法的一部分,并且将它们用于您所描述的目的是非常合适的。

这是基本列表 - 您会找到您熟悉的内容 - 使用 CONCAT,因为没有等效的运算符。

http://dev.mysql.com/doc/refman/5.5/en/string-functions.html

当我搜索“mysql sql parse url”时,我发现了很多例子。一个有趣的示例:

SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(TRIM(LEADING
"https://" FROM TRIM(LEADING "http://" FROM TRIM(url))), "/", 1), ":",
1), ".", IF(url LIKE "%.org.__%" OR url LIKE "%.net.__%" OR url LIKE
"%.com.__%" OR url LIKE "%.__.us%" OR url LIKE "%.co.__%" OR url LIKE
"%.__.uk%", -3, -2) )

关于mysql - 如何组合 MySQL 中的 LOCATE() 和 SUBSTR() 函数来创建新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6537775/

相关文章:

mysql - 模板工具包显示唯一行

mysql - 如何减少mysql查询执行时间

php - PHP/MySQL 不支持大写

MySQL - 函数不断返回null

php - nl2br 无法与 BBCode 一起使用

php - 在 MySQL 中计算一行?

mysql - 使用函数触发时出现错误 1064

php - BCRYPT 和 Random SALTS 在数据库中一起

php - 已超出数据库中的 'max_questions' 资源

mysql - 使用 MySQL 选择除当前视频之外的类似视频