Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / найти все поля со значениями NULL / 7 сообщений из 7, страница 1 из 1
10.10.2018, 18:32
    #39715720
найти все поля со значениями NULL
Всем привет,

хочу найти таблицы и поля со значениями 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
10.10.2018, 18:47
    #39715725
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все поля со значениями NULL
Hans Christian AndersenПочему не работает?потому что выдает ошибку.
...
Рейтинг: 0 / 0
10.10.2018, 19:06
    #39715736
найти все поля со значениями NULL
-2-,

Код ошибку не выдает. Просто не ищет заданное значение "column_name ist NULL"
...
Рейтинг: 0 / 0
10.10.2018, 19:11
    #39715739
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все поля со значениями NULL
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
10.10.2018, 19:30
    #39715749
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все поля со значениями NULL
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
11.10.2018, 00:07
    #39715858
SkilledJunior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
найти все поля со значениями NULL
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
11.10.2018, 00:20
    #39715864
найти все поля со значениями NULL
Спасибо andrey_anonymous и SY
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / найти все поля со значениями NULL / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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