Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 00:08 19.06.24 
Компютри и Интернет
   >> Бази данни
*Кратък преглед

Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема Търсене по текст в цяла база даннинови  
Авторbultra (Нерегистриран)
Публикувано03.12.05 08:46



Здравейте,

Някой има ли идея как мога да направя търсене по текст в цялата база данни на MS SQL?
Идеята ми е да намеря даден запис къде го има.

Благодаря



Тема stored procedureнови [re: bultra]  
Автор devnul ()
Публикувано03.12.05 10:11



търсене по текст в цялата база данни на MS SQL - търсене по текст във всяко текстово поле на всяка таблица, това ли искаш?

Ако не те мързи и базата е малка - правиш си всички селекти на ръка. Ако те мързи, погледни системните таблици, би трябвало да можеш да си направиш един селект, който да ти връща имената на таблиците и полетата (само тези, които са текстови) и после си въртиш цикъл по тях. Не съм се задълбочавала да гледам, пък и е прекалено рано още................. та... извини ме, ако говоря глупости...

Green Peas!


Тема Re: stored procedureнови [re: devnul]  
Авторbultra (Нерегистриран)
Публикувано03.12.05 10:25



да, точно това искам

Базата е голяма, освен това нямам идея къде би могло да го има, тъй като vendor -ите не ни дават пълно описание на базата и бизнес логиката, така че на ръка не става.

Май наистина ще пробвам с междинен селект да изкарам всички таблици, после всички полета и тях да ги вкарам в нов селект, благодаря



Тема молянови [re: bultra]  
Автор devnul ()
Публикувано03.12.05 10:33



join на sysobjects, syscolumns, systypes - май това ти трябва
правиш си cursor
в цикъл си съставяш селект и го изпълняваш
Така като гледам, май ще си се оправиш сам, успех!

Green Peas!


Тема Re: молянови [re: devnul]  
Авторbultra (Нерегистриран)
Публикувано03.12.05 11:18



Ще измисля вариант без курсор.
Използването на курсор е много енергоемко откъм ресурси и въобще не се препоръчва при обработване на голям обем от информация.
По-скоро ще го направя с вградени селекти или пък ще вкарам резултатите от междинните селекти (които вадят таблици, полета...) в буферни таблици върху които да изпълнявам следващия селект



Тема Re: Търсене по текст в цяла база даннинови [re: bultra]  
АвторЙopдaн (Нерегистриран)
Публикувано03.12.05 18:01



google: "MS SQL" "full text search"

Full Text Searching is a free, optional component of MS SQL 2000. When installed, it offers a vast array of additional string querying abilities.
. . .



Тема Май нещо не си разбрал :)нови [re: bultra]  
Автор NikB (любопитен)
Публикувано03.12.05 20:53



Май нещо не си разбрал :)
Идеята не е накрая да направиш общ селект, а да избираш една по една таблиците и да търсиш във всяко (текстово) поле на избраната таблица.



Тема Re: Търсене по текст в цяла база даннинови [re: Йopдaн]  
Авторbultra (Нерегистриран)
Публикувано03.12.05 21:07



Благодаря.
http://www.databasejournal.com/features/mssql/article.php/3441981
Все пак на пръв прочит и като гледам дадените примери това работи ако знаеш таблиците и полетаат (т.е. структураат на базата), а в моя случай аз не знам къде търся.
Иначе идеята е добра, още повече че Full Text Search е изнесено от БД сървъра и не пречи на performance-а.
Ще го активирам и ще пробвам - ще стане ясно



Тема Re: Май нещо не си разбрал :)нови [re: NikB]  
Авторbultra (Нерегистриран)
Публикувано03.12.05 21:58



Именно това ми беше идеята - да направя няколко итерации и накрая да получа това което ме интересува



Тема Re: Май нещо не си разбрал :)нови [re: bultra]  
Автор wqw (АзСъмЖив)
Публикувано05.12.05 15:02



Виж това за идеи:

IF OBJECT_ID('usp_SearchTables') IS NOT NULL DROP PROC usp_SearchTables

GO
-- exec dbo.usp_SearchTables 'wqw%'

CREATE PROC usp_SearchTables (
@SearchText VARCHAR(1000)
) AS
SET NOCOUNT ON

DECLARE @SQL NVARCHAR(4000)
, @ParamList NVARCHAR(4000)
, @TableName SYSNAME

SET @ParamList = '@SearchText VARCHAR(1000)'

--- prepare temp table w/ columns/tables to be processed
SELECT c.COLUMN_NAME, c.TABLE_NAME
INTO #TmpCol
FROM INFORMATION_SCHEMA.COLUMNS c
JOIN INFORMATION_SCHEMA.TABLES t
ON c.TABLE_NAME = t.TABLE_NAME
WHERE t.TABLE_TYPE IN ('BASE TABLE') -- 'VIEW'
AND DATA_TYPE IN ('VARCHAR', 'NVARCHAR', 'CHAR', 'NCHAR') -- 'TEXT', 'NTEXT'

--- loop columns/tables
WHILE EXISTS (SELECT * FROM #TmpCol)
BEGIN
SELECT TOP 1 @TableName = TABLE_NAME
FROM #TmpCol

SET @SQL = NULL

--- construct WHERE clause
SELECT @SQL = CASE WHEN @SQL IS NULL THEN '' ELSE @SQL + ' OR ' END
+ QUOTENAME(COLUMN_NAME) + ' LIKE @SearchText'
FROM #TmpCol
WHERE TABLE_NAME = @TableName

--- construct IF EXISTS statement
SET @SQL = '
IF EXISTS ( SELECT *
FROM ' + QUOTENAME(@TableName) + '
WHERE ' + @SQL + ')
RAISERROR (''Found in ' + REPLACE(@TableName, '''', '''''') + ''', 10, 1) WITH NOWAIT'

-- PRINT @SQL
EXEC dbo.sp_executesql @SQL, @ParamList, @SearchText

DELETE #TmpCol
WHERE TABLE_NAME = @TableName
END
GO

cheers,
</wqw>




Страници по тази тема: 1 | 2 | >> (покажи всички)
*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.