сопоставление шаблонов регулярных выражений mysql [Станция наблюдения за погодой 11]

#mysql #regex

#mysql #регулярное выражение

Вопрос:

Я практиковал этот вопрос [Станция наблюдения за погодой 11], когда использовал

 select distinct city
from station
where regexp_like(city, '^[^aeiou]|[^aeiou]

дал мне правильный ответ (458 результатов)
где

 select distinct city
from station
where not regexp_like(city, '^[aeiou]|[aeiou]

дал мне неправильный ответ (299 результатов).

Я чувствовал, что и  '^[^aeiou]'  то, и  NOT '^[aeiou]'  другое должно было дать мне не начинать с результатов aeiou, но, по-видимому, нет. В чем логические различия между этими двумя ответами?


Комментарии:

1. @buddemat что насчет этого? Это дает вам результаты, начинающиеся с гласной ИЛИ заканчивающиеся гласной.

2. Извините, я должен был написать больше объяснений. Моя точка зрения была такой же, как и в ответе ниже, просто добавил круглые скобки, чтобы указать, что второе значение равно ИЛИ, а отрицание становится И . Я планировал написать больше, но был в автобусе и внезапно понял, что мне нужно выйти. В любом случае, поскольку вы получили хороший ответ, я удалю свои комментарии, чтобы избежать путаницы...

3. Какую версию вы используете? Я не знаю regexp_like() .

4. @RickJames я проходил онлайн-практику на HackerRank. Так что, вероятно, не связано с версией. regexp_like() здесь dev.mysql.com/doc/refman/8.0/en /. ... Я узнал об этом и из других вопросов здесь.

5. @Meruemu - это новое в версии 8.0. (В более старых версиях это не было такой функции).

Ответ №1:

Они выглядят одинаково, но они разные.

 regexp_like(city, '^[^aeiou]|[^aeiou]

Это вернет совпадение, если a  city  начинается ИЛИ заканчивается согласной (не гласной).

Однако:

 not regexp_like(city, '^[aeiou]|[aeiou]

вернет совпадение, если a  city  не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a  city  начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между  OR  и  AND  в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.



);
дал мне правильный ответ (458 результатов)
где


дал мне неправильный ответ (299 результатов).

Я чувствовал, что и '^[^aeiou]' то, и NOT '^[aeiou]' другое должно было дать мне не начинать с результатов aeiou, но, по-видимому, нет. В чем логические различия между этими двумя ответами?

Комментарии:

1. @buddemat что насчет этого? Это дает вам результаты, начинающиеся с гласной ИЛИ заканчивающиеся гласной.

2. Извините, я должен был написать больше объяснений. Моя точка зрения была такой же, как и в ответе ниже, просто добавил круглые скобки, чтобы указать, что второе значение равно ИЛИ, а отрицание становится И . Я планировал написать больше, но был в автобусе и внезапно понял, что мне нужно выйти. В любом случае, поскольку вы получили хороший ответ, я удалю свои комментарии, чтобы избежать путаницы...

3. Какую версию вы используете? Я не знаю regexp_like() .

4. @RickJames я проходил онлайн-практику на HackerRank. Так что, вероятно, не связано с версией. regexp_like() здесь dev.mysql.com/doc/refman/8.0/en /. ... Я узнал об этом и из других вопросов здесь.

5. @Meruemu - это новое в версии 8.0. (В более старых версиях это не было такой функции).

Ответ №1:

Они выглядят одинаково, но они разные.


Это вернет совпадение, если a city начинается ИЛИ заканчивается согласной (не гласной).

Однако:


вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.

);

дал мне неправильный ответ (299 результатов).

Я чувствовал, что и '^[^aeiou]' то, и NOT '^[aeiou]' другое должно было дать мне не начинать с результатов aeiou, но, по-видимому, нет. В чем логические различия между этими двумя ответами?

Комментарии:

1. @buddemat что насчет этого? Это дает вам результаты, начинающиеся с гласной ИЛИ заканчивающиеся гласной.

2. Извините, я должен был написать больше объяснений. Моя точка зрения была такой же, как и в ответе ниже, просто добавил круглые скобки, чтобы указать, что второе значение равно ИЛИ, а отрицание становится И . Я планировал написать больше, но был в автобусе и внезапно понял, что мне нужно выйти. В любом случае, поскольку вы получили хороший ответ, я удалю свои комментарии, чтобы избежать путаницы...

3. Какую версию вы используете? Я не знаю regexp_like() .

4. @RickJames я проходил онлайн-практику на HackerRank. Так что, вероятно, не связано с версией. regexp_like() здесь dev.mysql.com/doc/refman/8.0/en /. ... Я узнал об этом и из других вопросов здесь.

5. @Meruemu - это новое в версии 8.0. (В более старых версиях это не было такой функции).

Ответ №1:

Они выглядят одинаково, но они разные.


Это вернет совпадение, если a city начинается ИЛИ заканчивается согласной (не гласной).

Однако:


вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.

);

дал мне правильный ответ (458 результатов)
где


дал мне неправильный ответ (299 результатов).

Я чувствовал, что и '^[^aeiou]' то, и NOT '^[aeiou]' другое должно было дать мне не начинать с результатов aeiou, но, по-видимому, нет. В чем логические различия между этими двумя ответами?

Комментарии:

1. @buddemat что насчет этого? Это дает вам результаты, начинающиеся с гласной ИЛИ заканчивающиеся гласной.

2. Извините, я должен был написать больше объяснений. Моя точка зрения была такой же, как и в ответе ниже, просто добавил круглые скобки, чтобы указать, что второе значение равно ИЛИ, а отрицание становится И . Я планировал написать больше, но был в автобусе и внезапно понял, что мне нужно выйти. В любом случае, поскольку вы получили хороший ответ, я удалю свои комментарии, чтобы избежать путаницы...

3. Какую версию вы используете? Я не знаю regexp_like() .

4. @RickJames я проходил онлайн-практику на HackerRank. Так что, вероятно, не связано с версией. regexp_like() здесь dev.mysql.com/doc/refman/8.0/en /. ... Я узнал об этом и из других вопросов здесь.

5. @Meruemu - это новое в версии 8.0. (В более старых версиях это не было такой функции).

Ответ №1:

Они выглядят одинаково, но они разные.


Это вернет совпадение, если a city начинается ИЛИ заканчивается согласной (не гласной).

Однако:


вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.

)
Это вернет совпадение, если a city начинается ИЛИ заканчивается согласной (не гласной).

Однако:


вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.

);

дал мне правильный ответ (458 результатов)
где


дал мне неправильный ответ (299 результатов).

Я чувствовал, что и '^[^aeiou]' то, и NOT '^[aeiou]' другое должно было дать мне не начинать с результатов aeiou, но, по-видимому, нет. В чем логические различия между этими двумя ответами?

Комментарии:

1. @buddemat что насчет этого? Это дает вам результаты, начинающиеся с гласной ИЛИ заканчивающиеся гласной.

2. Извините, я должен был написать больше объяснений. Моя точка зрения была такой же, как и в ответе ниже, просто добавил круглые скобки, чтобы указать, что второе значение равно ИЛИ, а отрицание становится И . Я планировал написать больше, но был в автобусе и внезапно понял, что мне нужно выйти. В любом случае, поскольку вы получили хороший ответ, я удалю свои комментарии, чтобы избежать путаницы…

3. Какую версию вы используете? Я не знаю regexp_like() .

4. @RickJames я проходил онлайн-практику на HackerRank. Так что, вероятно, не связано с версией. regexp_like() здесь dev.mysql.com/doc/refman/8.0/en /. … Я узнал об этом и из других вопросов здесь.

5. @Meruemu — это новое в версии 8.0. (В более старых версиях это не было такой функции).

Ответ №1:

Они выглядят одинаково, но они разные.


Это вернет совпадение, если a city начинается ИЛИ заканчивается согласной (не гласной).

Однако:


вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.

);дал мне неправильный ответ (299 результатов).

Я чувствовал, что и '^[^aeiou]' то, и NOT '^[aeiou]' другое должно было дать мне не начинать с результатов aeiou, но, по-видимому, нет. В чем логические различия между этими двумя ответами?

Комментарии:

1. @buddemat что насчет этого? Это дает вам результаты, начинающиеся с гласной ИЛИ заканчивающиеся гласной.

2. Извините, я должен был написать больше объяснений. Моя точка зрения была такой же, как и в ответе ниже, просто добавил круглые скобки, чтобы указать, что второе значение равно ИЛИ, а отрицание становится И . Я планировал написать больше, но был в автобусе и внезапно понял, что мне нужно выйти. В любом случае, поскольку вы получили хороший ответ, я удалю свои комментарии, чтобы избежать путаницы…

3. Какую версию вы используете? Я не знаю regexp_like() .

4. @RickJames я проходил онлайн-практику на HackerRank. Так что, вероятно, не связано с версией. regexp_like() здесь dev.mysql.com/doc/refman/8.0/en /. … Я узнал об этом и из других вопросов здесь.

5. @Meruemu — это новое в версии 8.0. (В более старых версиях это не было такой функции).

Ответ №1:

Они выглядят одинаково, но они разные.


Это вернет совпадение, если a city начинается ИЛИ заканчивается согласной (не гласной).

Однако:


вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.

);дал мне правильный ответ (458 результатов)
где


дал мне неправильный ответ (299 результатов).

Я чувствовал, что и '^[^aeiou]' то, и NOT '^[aeiou]' другое должно было дать мне не начинать с результатов aeiou, но, по-видимому, нет. В чем логические различия между этими двумя ответами?

Комментарии:

1. @buddemat что насчет этого? Это дает вам результаты, начинающиеся с гласной ИЛИ заканчивающиеся гласной.

2. Извините, я должен был написать больше объяснений. Моя точка зрения была такой же, как и в ответе ниже, просто добавил круглые скобки, чтобы указать, что второе значение равно ИЛИ, а отрицание становится И . Я планировал написать больше, но был в автобусе и внезапно понял, что мне нужно выйти. В любом случае, поскольку вы получили хороший ответ, я удалю свои комментарии, чтобы избежать путаницы…

3. Какую версию вы используете? Я не знаю regexp_like() .

4. @RickJames я проходил онлайн-практику на HackerRank. Так что, вероятно, не связано с версией. regexp_like() здесь dev.mysql.com/doc/refman/8.0/en /. … Я узнал об этом и из других вопросов здесь.

5. @Meruemu — это новое в версии 8.0. (В более старых версиях это не было такой функции).

Ответ №1:

Они выглядят одинаково, но они разные.


Это вернет совпадение, если a city начинается ИЛИ заканчивается согласной (не гласной).

Однако:


вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.

)

вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.

);

дал мне правильный ответ (458 результатов)
где


дал мне неправильный ответ (299 результатов).

Я чувствовал, что и '^[^aeiou]' то, и NOT '^[aeiou]' другое должно было дать мне не начинать с результатов aeiou, но, по-видимому, нет. В чем логические различия между этими двумя ответами?

Комментарии:

1. @buddemat что насчет этого? Это дает вам результаты, начинающиеся с гласной ИЛИ заканчивающиеся гласной.

2. Извините, я должен был написать больше объяснений. Моя точка зрения была такой же, как и в ответе ниже, просто добавил круглые скобки, чтобы указать, что второе значение равно ИЛИ, а отрицание становится И . Я планировал написать больше, но был в автобусе и внезапно понял, что мне нужно выйти. В любом случае, поскольку вы получили хороший ответ, я удалю свои комментарии, чтобы избежать путаницы…

3. Какую версию вы используете? Я не знаю regexp_like() .

4. @RickJames я проходил онлайн-практику на HackerRank. Так что, вероятно, не связано с версией. regexp_like() здесь dev.mysql.com/doc/refman/8.0/en /. … Я узнал об этом и из других вопросов здесь.

5. @Meruemu — это новое в версии 8.0. (В более старых версиях это не было такой функции).

Ответ №1:

Они выглядят одинаково, но они разные.


Это вернет совпадение, если a city начинается ИЛИ заканчивается согласной (не гласной).

Однако:


вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.

);дал мне неправильный ответ (299 результатов).

Я чувствовал, что и '^[^aeiou]' то, и NOT '^[aeiou]' другое должно было дать мне не начинать с результатов aeiou, но, по-видимому, нет. В чем логические различия между этими двумя ответами?

Комментарии:

1. @buddemat что насчет этого? Это дает вам результаты, начинающиеся с гласной ИЛИ заканчивающиеся гласной.

2. Извините, я должен был написать больше объяснений. Моя точка зрения была такой же, как и в ответе ниже, просто добавил круглые скобки, чтобы указать, что второе значение равно ИЛИ, а отрицание становится И . Я планировал написать больше, но был в автобусе и внезапно понял, что мне нужно выйти. В любом случае, поскольку вы получили хороший ответ, я удалю свои комментарии, чтобы избежать путаницы…

3. Какую версию вы используете? Я не знаю regexp_like() .

4. @RickJames я проходил онлайн-практику на HackerRank. Так что, вероятно, не связано с версией. regexp_like() здесь dev.mysql.com/doc/refman/8.0/en /. … Я узнал об этом и из других вопросов здесь.

5. @Meruemu — это новое в версии 8.0. (В более старых версиях это не было такой функции).

Ответ №1:

Они выглядят одинаково, но они разные.


Это вернет совпадение, если a city начинается ИЛИ заканчивается согласной (не гласной).

Однако:


вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.

);дал мне правильный ответ (458 результатов)
где


дал мне неправильный ответ (299 результатов).

Я чувствовал, что и '^[^aeiou]' то, и NOT '^[aeiou]' другое должно было дать мне не начинать с результатов aeiou, но, по-видимому, нет. В чем логические различия между этими двумя ответами?

Комментарии:

1. @buddemat что насчет этого? Это дает вам результаты, начинающиеся с гласной ИЛИ заканчивающиеся гласной.

2. Извините, я должен был написать больше объяснений. Моя точка зрения была такой же, как и в ответе ниже, просто добавил круглые скобки, чтобы указать, что второе значение равно ИЛИ, а отрицание становится И . Я планировал написать больше, но был в автобусе и внезапно понял, что мне нужно выйти. В любом случае, поскольку вы получили хороший ответ, я удалю свои комментарии, чтобы избежать путаницы…

3. Какую версию вы используете? Я не знаю regexp_like() .

4. @RickJames я проходил онлайн-практику на HackerRank. Так что, вероятно, не связано с версией. regexp_like() здесь dev.mysql.com/doc/refman/8.0/en /. … Я узнал об этом и из других вопросов здесь.

5. @Meruemu — это новое в версии 8.0. (В более старых версиях это не было такой функции).

Ответ №1:

Они выглядят одинаково, но они разные.


Это вернет совпадение, если a city начинается ИЛИ заканчивается согласной (не гласной).

Однако:


вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.

)

Это вернет совпадение, если a city начинается ИЛИ заканчивается согласной (не гласной).

Однако:


вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.

);дал мне правильный ответ (458 результатов)
где


дал мне неправильный ответ (299 результатов).

Я чувствовал, что и '^[^aeiou]' то, и NOT '^[aeiou]' другое должно было дать мне не начинать с результатов aeiou, но, по-видимому, нет. В чем логические различия между этими двумя ответами?

Комментарии:

1. @buddemat что насчет этого? Это дает вам результаты, начинающиеся с гласной ИЛИ заканчивающиеся гласной.

2. Извините, я должен был написать больше объяснений. Моя точка зрения была такой же, как и в ответе ниже, просто добавил круглые скобки, чтобы указать, что второе значение равно ИЛИ, а отрицание становится И . Я планировал написать больше, но был в автобусе и внезапно понял, что мне нужно выйти. В любом случае, поскольку вы получили хороший ответ, я удалю свои комментарии, чтобы избежать путаницы…

3. Какую версию вы используете? Я не знаю regexp_like() .

4. @RickJames я проходил онлайн-практику на HackerRank. Так что, вероятно, не связано с версией. regexp_like() здесь dev.mysql.com/doc/refman/8.0/en /. … Я узнал об этом и из других вопросов здесь.

5. @Meruemu — это новое в версии 8.0. (В более старых версиях это не было такой функции).

Ответ №1:

Они выглядят одинаково, но они разные.


Это вернет совпадение, если a city начинается ИЛИ заканчивается согласной (не гласной).

Однако:


вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.

);

дал мне неправильный ответ (299 результатов).

Я чувствовал, что и '^[^aeiou]' то, и NOT '^[aeiou]' другое должно было дать мне не начинать с результатов aeiou, но, по-видимому, нет. В чем логические различия между этими двумя ответами?

Комментарии:

1. @buddemat что насчет этого? Это дает вам результаты, начинающиеся с гласной ИЛИ заканчивающиеся гласной.

2. Извините, я должен был написать больше объяснений. Моя точка зрения была такой же, как и в ответе ниже, просто добавил круглые скобки, чтобы указать, что второе значение равно ИЛИ, а отрицание становится И . Я планировал написать больше, но был в автобусе и внезапно понял, что мне нужно выйти. В любом случае, поскольку вы получили хороший ответ, я удалю свои комментарии, чтобы избежать путаницы…

3. Какую версию вы используете? Я не знаю regexp_like() .

4. @RickJames я проходил онлайн-практику на HackerRank. Так что, вероятно, не связано с версией. regexp_like() здесь dev.mysql.com/doc/refman/8.0/en /. … Я узнал об этом и из других вопросов здесь.

5. @Meruemu — это новое в версии 8.0. (В более старых версиях это не было такой функции).

Ответ №1:

Они выглядят одинаково, но они разные.


Это вернет совпадение, если a city начинается ИЛИ заканчивается согласной (не гласной).

Однако:


вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.

);

дал мне правильный ответ (458 результатов)
где


дал мне неправильный ответ (299 результатов).

Я чувствовал, что и '^[^aeiou]' то, и NOT '^[aeiou]' другое должно было дать мне не начинать с результатов aeiou, но, по-видимому, нет. В чем логические различия между этими двумя ответами?

Комментарии:

1. @buddemat что насчет этого? Это дает вам результаты, начинающиеся с гласной ИЛИ заканчивающиеся гласной.

2. Извините, я должен был написать больше объяснений. Моя точка зрения была такой же, как и в ответе ниже, просто добавил круглые скобки, чтобы указать, что второе значение равно ИЛИ, а отрицание становится И . Я планировал написать больше, но был в автобусе и внезапно понял, что мне нужно выйти. В любом случае, поскольку вы получили хороший ответ, я удалю свои комментарии, чтобы избежать путаницы…

3. Какую версию вы используете? Я не знаю regexp_like() .

4. @RickJames я проходил онлайн-практику на HackerRank. Так что, вероятно, не связано с версией. regexp_like() здесь dev.mysql.com/doc/refman/8.0/en /. … Я узнал об этом и из других вопросов здесь.

5. @Meruemu — это новое в версии 8.0. (В более старых версиях это не было такой функции).

Ответ №1:

Они выглядят одинаково, но они разные.


Это вернет совпадение, если a city начинается ИЛИ заканчивается согласной (не гласной).

Однако:


вернет совпадение, если a city не начинается и не заканчивается гласной
, или, другими словами, вернет совпадение, если a city начинается и заканчивается согласной (не гласной).

Обратите внимание на различия между OR и AND в обоих выражениях, что приведет к большему количеству совпадений в первом выражении, чем во втором.