Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск по БД 
:(
    Опции темы
Neymexa
Дата 1.4.2010, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.12.2008

Репутация: нет
Всего: нет



как найти запись в БД не зная в какой таблице она находится?

ниже приведенное не помогает

Код

01.set concat_null_yields_null on
02.declare 
03.    
@collist varchar(max), 
04.    
@srch_sql varchar(max), 
05.    
@schemaName varchar(128), 
06.    
@tableName varchar(128) 
07. 
 
08.declare curs cursor local static forward_only for 
09.    
select distinct c.TABLE_SCHEMA, c.TABLE_NAME 
10.    
from INFORMATION_SCHEMA.[COLUMNS] c 
11.    
where c.DATA_TYPE in('char', 'varchar', 'nvarchar', 'text') 
12.    
and c.CHARACTER_MAXIMUM_LENGTH >=4 
13.    
and objectproperty(object_id(c.TABLE_SCHEMA + '.'+ c.TABLE_NAME), 'IsUserTable ') = 1 
14.    
order by 1, 2 
15.open curs 
16.while 1=1 
17.begin
18. 
 
19.    
fetch next fr om curs into @schemaName, @tableName 
20.    
if @@FETCH_STATUS <> 0 break 
21. 
 
22.-- Данную строку можно раскомментарить, если хочется видеть, в какой таблице идет поиск в данный момент  
23.--  raiserror(';%s.%s', 10, 1, @schemaName, @tableName) with nowait 
24. 
 
25.    
select
26.        
@collist = null
27.         
 
28.    
select 
29.        
@collist = isnull(@collist + ' 
30.    
or ', '') +'upper(convert(varchar(8000), ' + c.COLUMN_NAME + ')) like ''%ЛЮТИК%''' -- Тут указываем, что и как ищем  
31.    
from INFORMATION_SCHEMA.[COLUMNS] c 
32.    
where c.TABLE_SCHEMA = @schemaName 
33.    
and c.TABLE_NAME = @tableName 
34.    
and c.DATA_TYPE in('char', 'varchar', 'nvarchar', 'text') 
35.    
and c.CHARACTER_MAXIMUM_LENGTH >=6 
36.    
set @srch_sql = 'if exists(select * from '+@schemaName+'.'+@tableName+' with(nolock) where '+@collist+') 
37.    
raiserror('''+@schemaName+'.'+@tableName+' - found!'', 10, 1) with nowait'
38.     
 
39.    
exec(@srch_sql) 
40.end

PM MAIL   Вверх
Akina
Дата 1.4.2010, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



Цитата(Neymexa @  1.4.2010,  11:17 Найти цитируемый пост)
как найти запись в БД не зная в какой таблице она находится?

Вероятно, имеется несколько таблиц одинаковой структуры, и в одной из них есть запись с необходимыми параметрами, которую надо получить вместе с именем таблицы? тогда...

Код

select fieldA, fieldB, ... , fieldN, 'Table1' as Source
from table1
where fieldM in ( ... )
union 
select fieldX, fieldY, ... , fieldZ, 'Table2'
from table2
where fieldK in ( ... )
union
...


PS. Сама постановка вопроса завораживает...



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Neymexa
Дата 1.4.2010, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.12.2008

Репутация: нет
Всего: нет



сори если плохо объяснил.

вобщем представьте ситуацию дали написанную прогу(субд ms sql 2008) и какие данные в каких таблицах есть не знаешь, а таблиц >500.

 smile 

Это сообщение отредактировал(а) Akina - 1.4.2010, 11:58
PM MAIL   Вверх
tusha
Дата 1.4.2010, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 17.7.2008

Репутация: нет
Всего: 1



самое простое - если база не очень по размеру велика - експотрнуть ее в тесктовый файл и потом искать  smile 
ЗЫ: не хватает грепа под мсскл

Добавлено через 11 минут и 11 секунд
а вообще помнится гдето на sql.ru была такая статья или ФАК
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.