powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / найти все поля со значениями NULL
7 сообщений из 7, страница 1 из 1
найти все поля со значениями NULL
    #39715720
Всем привет,

хочу найти таблицы и поля со значениями NULL.
Попробовал такой код:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
WITH  tables_column AS
  (SELECT /*+materialize */ table_name, column_name
   FROM   cols
   WHERE  1=1
   and data_type in ('DATE','NUMBER','VARCHAR2','CHAR')
   --and table_name like '%NAMEOFTABLE'
   )
SELECT 
       SUBSTR (table_name, 1, 14) "Table",
       SUBSTR (column_name, 1, 14) "Column"
FROM   tables_column,
       TABLE (xmlsequence (dbms_xmlgen.getxmltype ('select "'
       || column_name
       || '" from "'
       || table_name
       || '" where "'
       || column_name
       || '" is NULL' ).extract ('ROWSET/ROW/*') ) ) t
ORDER  BY "Table"



Почему не работает?
Заранее спасибо.
...
Рейтинг: 0 / 0
найти все поля со значениями NULL
    #39715725
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hans Christian AndersenПочему не работает?потому что выдает ошибку.
...
Рейтинг: 0 / 0
найти все поля со значениями NULL
    #39715736
-2-,

Код ошибку не выдает. Просто не ищет заданное значение "column_name ist NULL"
...
Рейтинг: 0 / 0
найти все поля со значениями NULL
    #39715739
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hans Christian AndersenВсем привет,
хочу найти таблицы и поля со значениями NULL.
Код: plsql
1.
2.
3.
4.
select owner, table_name, column_name from all_tab_cols
where data_type in ('DATE','NUMBER','VARCHAR2','CHAR')
  and nullable = 'Y'
  and num_nulls > 0
...
Рейтинг: 0 / 0
найти все поля со значениями NULL
    #39715749
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hans Christian Andersen,

Медитируй на тему:

Код: plsql
1.
2.
3.
       TABLE (xmlsequence (dbms_xmlgen.getxmltype ('select "'
       || column_name
       || '" from "'



и

Код: plsql
1.
2.
3.
       TABLE (xmlsequence (dbms_xmlgen.getxmltype ('select '''
       || column_name
       || ''' from "'



Ну и AND ROWNUM = 1 то добавь.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
SQL> WITH  tables_column AS
  2    (SELECT /*+materialize */ table_name, column_name
  3     FROM   cols
  4     WHERE  table_name = 'EMP' and column_name = 'COMM'
  5     and data_type in ('DATE','NUMBER','VARCHAR2','CHAR')
  6     --and table_name like '%NAMEOFTABLE'
  7     )
  8  SELECT
  9         SUBSTR (table_name, 1, 14) "Table",
 10         SUBSTR (column_name, 1, 14) "Column"
 11  FROM   tables_column,
 12         TABLE (xmlsequence (dbms_xmlgen.getxmltype ('select "'
 13         || column_name
 14         || '" from "'
 15         || table_name
 16         || '" where "'
 17         || column_name
 18         || '" is NULL AND ROWNUM  =1' ).extract ('ROWSET/ROW/*') ) ) t
 19  ORDER  BY "Table"
 20  /

no rows selected

SQL> WITH  tables_column AS
  2    (SELECT /*+materialize */ table_name, column_name
  3     FROM   cols
  4     WHERE  table_name = 'EMP' and column_name = 'COMM'
  5     and data_type in ('DATE','NUMBER','VARCHAR2','CHAR')
  6     --and table_name like '%NAMEOFTABLE'
  7     )
  8  SELECT
  9         SUBSTR (table_name, 1, 14) "Table",
 10         SUBSTR (column_name, 1, 14) "Column"
 11  FROM   tables_column,
 12         TABLE (xmlsequence (dbms_xmlgen.getxmltype ('select '''
 13          || column_name
 14          || ''' from "'
 15         || table_name
 16         || '" where "'
 17         || column_name
 18         || '" is NULL AND ROWNUM  =1' ).extract ('ROWSET/ROW/*') ) ) t
 19  ORDER  BY "Table"
 20  /

Table
--------------------------------------------------------
Column
--------------------------------------------------------
EMP
COMM


SQL> 



SY.
...
Рейтинг: 0 / 0
найти все поля со значениями NULL
    #39715858
SkilledJunior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hans Christian Andersen,

Когда собираешь строку запроса, проверяй что получается.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
declare
  table_name  varchar2(30) := 'DUAL';
  column_name varchar2(30) := 'DUMMY';
  l_query     varchar2(200);
begin
    select
           'select "'
           || column_name
           || '" from "'
           || table_name
           || '" where "'
           || column_name
           || '" is NOT NULL'
    into l_query 
    from dual;
    dbms_output.put_line('Вариант 1: ' || l_query);

    select
           'select '''
           || column_name
           || ''' from "'
           || table_name
           || '" where "'
           || column_name
           || '" is NOT NULL'
    into l_query 
    from dual;
    dbms_output.put_line('Вариант 2: ' || l_query);
end;



Код: plsql
1.
2.
Вариант 1: select "DUMMY" from "DUAL" where "DUMMY" is NOT NULL
Вариант 2: select 'DUMMY' from "DUAL" where "DUMMY" is NOT NULL



Оба варианта работают, но результат цуть цуть разный.
...
Рейтинг: 0 / 0
найти все поля со значениями NULL
    #39715864
Спасибо andrey_anonymous и SY
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / найти все поля со значениями NULL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]