SQL -Query для поиска определенного столбца во всех таблицах базы данных, но без нулевых значений
Я не эксперт по SQL. Мне нужно найти столбец, который присутствует во всех таблицах базы данных, но который не имеет нулевых значений, сохраненных для этой конкретной записи.
Ниже приведен запрос, который извлекает мне все таблицы с именем моего столбца:
SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE column_name LIKE 'classPK'
- Управление SQL Server лучше всего подходит для преобразования юникода
- Как иметь триггер в одном вводе данных DB в другой БД по соединению с подключенным сервером
- Не удалось удалить пользователя базы данных, поскольку пользователь уже зарегистрирован в настоящее время. ошибка 15434
- Как получить данные в кусках из очень большой таблицы, которая имеет тип данных столбца первичного ключа как varchar
- Обновление строк на основе rownumber в SQL Server 2012
- Получите результат «ИЛИ» всех строк столбца бит
- Получить последние 30-дневные записи с сегодняшнего дня в SQL Server
- Посмотрите, какие данные находятся в файле данных SQL Server?
- SQL Server для многоязычных данных
- Фильтрация строк на основе определенных условий
- Запуск подсчета для каждых 2 рядов
- Ошибка диспетчера подключения к службе SSIS 2012
- Как запустить скрипт SSIS SQL Agent Шаг для запуска на localhost?
Попробуй это…
declare @q nvarchar(1000); declare cur_Select cursor for select 'select * from ['+tab.name+'] where ['+col.name+'] is not null' from sys.tables tab join sys.columns col on tab.object_id = col.object_id where col.name like 'name' open cur_Select fetch next from cur_Select into @q while @@FETCH_STATUS = 0 begin exec sp_executesql @q fetch next from cur_Select into @q end close cur_Select deallocate cur_Select
Попробуйте с этим утверждением:
DECLARE @TABLE_NAME NVARCHAR(MAX); DECLARE @COLUMN_NAME NVARCHAR(MAX); DECLARE @crs CURSOR; DECLARE @query NVARCHAR(MAX); set @crs = CURSOR FOR SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE column_name LIKE 'CD_CIC_PROD%' BEGIN TRY OPEN @crs END TRY BEGIN CATCH END CATCH FETCH NEXT FROM @crs INTO @TABLE_NAME, @COLUMN_NAME WHILE (@@FETCH_STATUS = 0) BEGIN set @query = 'SELECT * FROM ['[email protected]_NAME+'] WHERE ['[email protected]_NAME+'] IS NOT NULL' EXEC sp_executesql @query FETCH NEXT FROM @crs INTO @TABLE_NAME, @COLUMN_NAME END