Я пытаюсь получить все значения из таблицы с такими условиями:
- длина значения 3
- значение не в значениях, которые больше, чем 3
Пример таблицы (simple_table):
id | name
-------------
1 | 418
2 | 223:542
3 | 54
4 | 418
5 | 418:223:100
6 | 223
7 | 999
8 | 132
9 | null
10 | 100
Итак, у меня три разных класса длины
- длина имени 3
- длина имени меньше 3
- длина имени более 3
Мой код:
Первый
select distinct name
from simple_table
where name is not null
and LENGTH( name ) = 3;
Возвращаемые значения
name
-------
418
223
999
132
Второе:
select distinct name
from simple_table
where name is not null
and LENGTH( name ) > 3;
Возвращаемые значения
name
-------
223:542
418:223:100
«Основная часть» кода
select distinct name
from simple_table
where name is not null
and LENGTH( name ) = 3
and '223:542' not like CONCAT(CONCAT('%', name ), '%');
Это возвращение
name
-------
418
999
132
100
Когда я пытаюсь использовать этот код, он вызывает ошибку
select distinct name
from simple_table
where name is not null
and LENGTH( name) = 3
and (select distinct name
from simple_table
where name is not null
and LENGTH( name) > 3) not like in (CONCAT(CONCAT('%', name), '%'));
Ошибка:
ORA-00936: missing expression
00936. 00000 - "missing expression"
*Cause:
*Action:
Error at Line: 15 Column: 50
Мой желаемый результат:
name
-------
999
132