powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Поиск по всей базе данных
3 сообщений из 28, страница 2 из 2
Период между сообщениями больше года.
Поиск по всей базе данных
    #37852676
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://club.shelek.ru/viewart.php?id=319 может поздновато и решение для mysql, но на идею может натолкнуть.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Поиск по всей базе данных
    #38563743
shura223
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если человек в 12 году решил ответить на вопрос из 2004, то в 2014ом я тоже могу так сделать, ИМХО.
Код: sql
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.
54.
CREATE PROC SearchAllTables (@SearchStr nvarchar(100))
AS
BEGIN
	CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))

	SET NOCOUNT ON

	DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
	SET  @TableName = ''
	SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')

	WHILE @TableName IS NOT NULL
	BEGIN
		SET @ColumnName = ''
		SET @TableName = 
		(
			SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
			FROM 	INFORMATION_SCHEMA.TABLES
			WHERE 		TABLE_TYPE = 'BASE TABLE'
				AND	QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
				AND	OBJECTPROPERTY(
						OBJECT_ID(
							QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
							 ), 'IsMSShipped'
						       ) = 0
		)

		WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
		BEGIN
			SET @ColumnName =
			(
				SELECT MIN(QUOTENAME(COLUMN_NAME))
				FROM 	INFORMATION_SCHEMA.COLUMNS
				WHERE 		TABLE_SCHEMA	= PARSENAME(@TableName, 2)
					AND	TABLE_NAME	= PARSENAME(@TableName, 1)
					AND	DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
					AND	QUOTENAME(COLUMN_NAME) > @ColumnName
			)
	
			IF @ColumnName IS NOT NULL
			BEGIN
				INSERT INTO #Results
				EXEC
				(
					'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) 
					FROM ' + @TableName + ' (NOLOCK) ' +
					' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
				)
			END
		END	
	END

	SELECT ColumnName, ColumnValue FROM #Results
END



Выполнять:
EXEC SearchAllTables 'Строка'
GO
В 2008 MSSQL работает нормально.
...
Рейтинг: 0 / 0
Поиск по всей базе данных
    #38563745
shura223
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shura223, тааккк.... Не заметил, что ветка по ФБ и ИБ, так как гуглил МС. Так что сори, но выше указан вариант для MSSQL.
...
Рейтинг: 0 / 0
3 сообщений из 28, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Поиск по всей базе данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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