Выбор записей, которые имеют только номер в столбце VARCHAR - PullRequest
1 голос
/ 18 апреля 2019

Я пытаюсь самостоятельно объединиться, чтобы найти группы записей, где атрибут не имеет одинаковую длину, а атрибут - все числа.

Вот мой запрос:

SELECT * 
FROM MYTABLE t3
WHERE t3.GROUPID IN (SELECT t1.GROUPID
                     FROM MYTABLE t1, MYTABLE t2
                     WHERE t1.FILE_ID <> t2.FILE_ID
                       AND t1.GROUPID = t2.GROUPID
                       AND (length(t1.STR_FIELD) <> length(t2.STR_FIELD)))
  AND ORIG_GROUPID LIKE 'FRED_E%'
ORDER BY GROUPID ASC; 

Моя таблица выглядит так:

-----------------------------
|GROUPID |FILE_ID| STR_FIELD|
| 1      | 12314 | 101      |
| 1      | 54246 | 1011     |
| 2      | 75375 | 202      |
| 2      | 24664 | 202M     |
-----------------------------

В приведенном выше случае я бы хотел, чтобы возвращался только GROUPID 1:

-----------------------------
|GROUPID |FILE_ID| STR_FIELD|
| 1      | 12314 | 101      |
| 1      | 54246 | 1011     |
-----------------------------

Как я могу изменить свой запрос, чтобы это произошло?

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

это будет работать:

select * from Table1 where regexp_like(STR_FIELD,'^\d+$');

чек http://sqlfiddle.com/#!4/79c2f/5

скорее это

select * from Table1 where regexp_like(STR_FIELD,'^\d*\d*$');

чек http://sqlfiddle.com/#!4/5a8e9b/1

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

Попробуйте это

  select * FROM MYTABLE   t3
    WHERE t3.GROUPID IN (
      SELECT t1.GROUPID
      FROM MYTABLE   t1, MYTABLE  t2
      WHERE t1.FILE_ID <> t2.FILE_ID
      AND t1.GROUPID = t2.GROUPID
      AND (length(t1.STR_FIELD)<> length(t2.STR_FIELD)))
      and ORIG_GROUPID like 'FRED_E%'
      and (VALIDATE_CONVERSION(t1.STR_FIELD AS NUMBER) = 1)
      and (VALIDATE_CONVERSION(t2.STR_FIELD AS NUMBER) = 1)
      order by GROUPID asc; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...