如果我有两个substring_index,哪个首先执行?内部的substring_index(
mycol ,'/',3)
还是外部的?
substring_index(substring_index(`mycol`,'/',3),'://',-1)
我要治疗的刺痛示例:
https://www.yahoo.com/
http://google.com/en/
我想得到:
www.yahoo.com
google.com
1)首先执行哪个substring_index
?根据首先执行的输出构造第二个substring_index
,这一点很重要。
2)我的substring_index
语句正确吗?
答案 0 :(得分:0)
阿苏,您可以轻松检查
select substring_index(substring_index('https://www.yahoo.com/','/',3),'://',-1);
www.yahoo.com
select substring_index(substring_index('http://google.com/en/','/',3),'://',-1);
google.com
对于每个嵌套函数,总是执行内部的..以及相应地执行下一个外部
答案 1 :(得分:0)
外部substring_index()
不能执行,除非存在要对其进行操作的值。
在这种情况下,要操作的值是:
substring_index(`mycol`,'/',3)
因此嵌套的substring_index()
首先执行,并提供外部substring_index()
所基于的值。
这是包括SQL在内的所有编程语言都评估表达式的方式。
关于第二个问题:是的,语句是正确的。
答案 2 :(得分:0)
作为使用SUBSTRING_INDEX
的替代方法,如果您使用的是MySQL 8+,则可以使用正则表达式替换功能:
SELECT
REGEXP_REPLACE('http://google.com/en/', 'https?://([^/]+)', '$1') AS url
FROM yourTable;
答案 3 :(得分:0)
您可以找到不同的用法或详细信息here。