Что я делаю не так с этим запросом SQL? - PullRequest
0 голосов
/ 22 октября 2019

enter image description here

SELECT * 
FROM bd2_zbiorcza
WHERE
  NOT (imie like '%a')
  AND plec = 'K';

Может кто-нибудь сказать, что я делаю не так с этим запросом?

Я хочу строки, где imie НЕ заканчивается 'a'. Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 22 октября 2019

Ваш запрос должен работать

Тестовые данные :

CREATE TABLE test_data ( imie, plek ) AS
SELECT 'aaa', 'K' FROM DUAL UNION ALL
SELECT 'bbb', 'K' FROM DUAL UNION ALL
SELECT 'cba', 'K' FROM DUAL UNION ALL
SELECT 'ddd', 'K' FROM DUAL;

Запросы

Вы можете использовать:

SELECT *
FROM   test_data
WHERE  NOT( imie LIKE '%a' ) AND plek = 'K'

или без скобок:

SELECT *
FROM   test_data
WHERE  NOT imie LIKE '%a' AND plek = 'K'

или, используя NOT LIKE:

SELECT *
FROM   test_data
WHERE  imie NOT LIKE '%a' AND plek = 'K'

Вывод :

Они все выводят:

IMIE | PLEK
:--- | :---
bbb  | K   
ddd  | K   

db <> скрипка здесь


Что может бытьнеправильно:

  1. У вас может быть a с акцентами (это не очевидно, поскольку вы разместили изображение, а не текст).
  2. У вас может быть белый-пробел после текста. Например: db <> fiddle .
  3. Вы можете хранить данные в столбце CHAR фиксированного размера (который был заполнен пробелами справа), а не в переменной-размер VARCHAR2 столбец. Например: db <> fiddle .
0 голосов
/ 23 октября 2019

Используйте регулярное выражение:

SELECT * 
FROM bd2_zbiorcza
WHERE
  not regexp_like(lower(imei), '.+a$')
  AND plec = 'K';
0 голосов
/ 22 октября 2019

Иногда за текстом стоят невидимые символы. Например, пробелы, табуляции, переносы строк,…

В большинстве случаев это просто пробелы.
Но вы можете обрезать эти конечные пробелы, отфильтровывая их с помощью NOT LIKE.

Например,используя функцию RTRIM .

SELECT * 
FROM bd2_zbiorcza
WHERE RTRIM(imie) NOT LIKE '%a'
  AND plec = 'K';

И если это не просто пробелы, возможно, используйте регулярное выражение.

SELECT *
FROM bd2_zbiorcza
WHERE NOT REGEXP_LIKE(imie, 'a\s*$')
  AND plec = 'K';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...