Если у меня есть два substring_index, какой из них выполняется первым? - PullRequest
1 голос
/ 13 апреля 2019

Если у меня есть два 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?

Ответы [ 4 ]

0 голосов
/ 13 апреля 2019
  1. оператор в скобках всегда имеет более высокий приоритет.
  2. внутренний индекс подстроки просто обрезает символ '/' в конце.('https://www.yahoo.com’). внешняя подстрока индекса обрезки' https://‘. ('www.yahoo.com'). Ваше утверждение просто отлично.

Вы можете найти различные использования или подробную информацию здесь .

0 голосов
/ 13 апреля 2019

Внешний substring_index() не может быть выполнен, если не существует значения, с которым можно работать.В этом случае значение для работы:

substring_index(`mycol`,'/',3)

Таким образом, вложенный substring_index() выполняется 1-ым и предоставляет значение, на котором работает внешний substring_index().Это способ, которым все языки программирования, включая SQL, оценивают выражения.Что касается 2-го вопроса: да, утверждение правильное.

0 голосов
/ 13 апреля 2019

Как альтернатива использованию SUBSTRING_INDEX, если вы используете MySQL 8+, вы можете использовать функцию замены регулярного выражения:

SELECT
    REGEXP_REPLACE('http://google.com/en/', 'https?://([^/]+)', '$1') AS url
FROM yourTable;

Демо

0 голосов
/ 13 апреля 2019

Asu вы можете легко проверить

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

для каждой вложенной функции всегда выполняется внутренняя.. и рекурсивно следующий внешний

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...