Oracle SQL: вычесть несколько операторов SQL из одного оператора SQL

#sql #regex #oracle

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

Вопрос:

Привет сообществу stackoverflow

У меня следующая проблема, и я очень надеюсь, что кто-нибудь сможет направить меня в правильном направлении, используя oracle database 11.2.0.4

 select count(*)
from pi_track
 

==> возвращает 1’200’000 строк

И,

 select count(*)
from pi_track
where  REGEXP_LIKE (track,'^[[:digit:]]{4}

==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1'000'000 строк?

 То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)


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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:

 WITH pi_track AS
 (SELECT 'aaaaa' AS track FROM dual UNION ALL
  SELECT 'bbbbb' AS track FROM dual UNION ALL
  SELECT 'ccccc' AS track FROM dual UNION ALL
  SELECT 'ddddd' AS track FROM dual)
SELECT count(*) FROM pi_track
  WHERE NOT REGEXP_LIKE (track,'^a*


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); - Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:

 with pt as (
  select
    count(*) c
  from pi_track
)
select
  pt.c - count(*)
from
  pt,
  pi_track
where
  REGEXP_LIKE (track,'^[[:digit:]]{4}

Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.

 select * from pi_track
minus
select * from pi_track where REGEXP_LIKE (track,'^[[:digit:]]{4}

Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.

 select count(*)
from pi_track
where not REGEXP_LIKE (track,'^[[:digit:]]{4}




)
==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1'000'000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); - Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)
AND NOT REGEXP_LIKE (track,'^b*

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); - Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)

==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1'000'000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); - Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


);

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); - Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)
==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1'000'000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); - Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)
group by
pt.c;
Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)
AND NOT REGEXP_LIKE (track,‘^b*

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)

==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


);

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)

==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)
AND NOT REGEXP_LIKE (track,‘^b*

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


);

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)

==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)
group by
pt.c;

Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)

==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)
AND NOT REGEXP_LIKE (track,‘^b*

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


);

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)

==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)

)

==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)
AND NOT REGEXP_LIKE (track,‘^b*

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


);

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)

==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)
group by
pt.c;

Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)

==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)
AND NOT REGEXP_LIKE (track,‘^b*

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


);

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)

==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)

Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)
AND NOT REGEXP_LIKE (track,‘^b*

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)

==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


);

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)
group by
pt.c;Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)
AND NOT REGEXP_LIKE (track,‘^b*

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)

==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


);

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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.


)==> возвращает 200 000 строк

Как я могу объединить эти два оператора, чтобы второй оператор вычитался из первого и, следовательно, возвращал 1’000’000 строк?

То, что я пытаюсь сделать, это вычесть из первого запроса несколько нескольких, чтобы у меня был список результатов, в котором не применяется ни одно из условий where (regexp_like) (которые затем я могу проверить вручную)

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

1. Разве вы не можете просто отрицать предложения WHERE, чтобы получить правильное количество?

2. @AnthonyGrist Отрицание этого может быть более дорогостоящим, чем соответствующий шаблон регулярных выражений

Ответ №1:

Вы можете отрицать REGEXP_LIKE с NOT помощью и использовать несколько из них AND .

Пример:


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

1. WHERE REGEXP_LIKE (track,'^[^(a|b)]*$'); — Лучший вариант.

2. Большое вам спасибо за ваш ценный вклад! Будет играть со всем этим

Ответ №2:

Если вы действительно ищете счетчик:


Если вам действительно нужны данные, а не просто количество, вы можете фактически вычесть их, используя минус.


Я не тестировал производительность, но это дает вам другой вариант.

Или вы можете просто добавить NOT к текущему выбору.