0
A
回答
0
挖這個......它會搜索數據庫中的所有表格,但是可以將其修改爲只有一個表格。
/*This script will find any text value in the database*/
/*Output will be directed to the Messages window. Don't forget to look there!!!*/
SET NOCOUNT ON
DECLARE @valuetosearchfor varchar(128), @objectOwner varchar(64)
SET @valuetosearchfor = '%staff%' --should be formatted as a like search
SET @objectOwner = 'dbo'
DECLARE @potentialcolumns TABLE (id int IDENTITY, sql varchar(4000))
INSERT INTO @potentialcolumns (sql)
SELECT
('if exists (select 1 from [' +
[tabs].[table_schema] + '].[' +
[tabs].[table_name] +
'] (NOLOCK) where [' +
[cols].[column_name] +
'] like ''' + @valuetosearchfor + ''') print ''SELECT * FROM [' +
[tabs].[table_schema] + '].[' +
[tabs].[table_name] +
'] (NOLOCK) WHERE [' +
[cols].[column_name] +
'] LIKE ''''' + @valuetosearchfor + '''''' +
'''') as 'sql'
FROM information_schema.columns cols
INNER JOIN information_schema.tables tabs
ON cols.TABLE_CATALOG = tabs.TABLE_CATALOG
AND cols.TABLE_SCHEMA = tabs.TABLE_SCHEMA
AND cols.TABLE_NAME = tabs.TABLE_NAME
WHERE cols.data_type IN ('char', 'varchar', 'nvchar', 'nvarchar','text','ntext')
AND tabs.table_schema = @objectOwner
AND tabs.TABLE_TYPE = 'BASE TABLE'
ORDER BY tabs.table_catalog, tabs.table_name, cols.ordinal_position
DECLARE @count int
SET @count = (SELECT MAX(id) FROM @potentialcolumns)
PRINT 'Found ' + CAST(@count as varchar) + ' potential columns.'
PRINT 'Beginning scan...'
PRINT ''
PRINT 'These columns contain the values being searched for...'
PRINT ''
DECLARE @iterator int, @sql varchar(4000)
SET @iterator = 1
WHILE @iterator <= (SELECT Max(id) FROM @potentialcolumns)
BEGIN
SET @sql = (SELECT [sql] FROM @potentialcolumns where [id] = @iterator)
IF (@sql IS NOT NULL) and (RTRIM(LTRIM(@sql)) <> '')
BEGIN
--SELECT @sql --use when checking sql output
EXEC (@sql)
END
SET @iterator = @iterator + 1
END
PRINT ''
PRINT 'Scan completed'
0
我想你需要列出where子句中的所有列。儘管我遠離SQL嚮導......也許別人知道一種方式。
0
你將不得不把它寫出
0
當然,你必須寫出你想用作標準的所有列。
如果您添加您正在使用的編程語言以及您在哪種類型的環境中工作,我們可以爲您提供有關如何動態執行此操作的線索或解決方案。
我認爲你的問題真的是如何動態地做到這一點,取決於你的程序的用戶填寫在「搜索」形式。
如果沒有,那麼..給我們更多的信息。 ;)
3
正如其他人所說的,您可能需要手動或編程將所有列寫入WHERE子句。 SQL不包含直接執行此操作的功能。更好的問題可能是「你爲什麼需要這樣做?」。需要使用這種類型的查詢可能是一個很好的指標,表明您的數據庫不正確normalized。如果你告訴我們你的模式,我們也可以幫助解決這個問題(如果這是一個實際問題)。
相關問題
- 1. Solr查詢 - 返回所有不包含特定字段的結果
- 2. 查詢SQL字段是否包含多個值中的任何一個
- 3. SQL需要返回包含指定字母的每個字段的查詢
- 4. Mongoose查詢返回不包含特定字段的數組?
- 5. 返回不包含特定列的所有表的查詢
- 6. SQL查詢返回包含來自一個字段的重複數據的所有行
- 7. SQL查詢,其中一個字段值不包含空的空間
- 8. SQL - 返回所有行其中至少一個具有值「Y」
- 9. SQL - 包含2個特定值的所有行?
- 10. (SQL)從多於兩個表中選擇並返回所有表,其中有一個公共字段,其中所有表中都存在特定值
- 11. Mongo FIND查詢返回兩個文檔的字段包含相同的值(其中一個是數組)
- 12. MySQL更新字段值與多個返回行的子查詢
- 13. SQL查詢 - 返回行一個表中沒有在其他
- 14. 如何返回一個布爾其中列表只包含一個或多個所需的值
- 15. Hive SQL - 選擇包含值的所有行;其中行的一個相匹配的特定值
- 16. 如果其中一個行包含特定值,則返回列中具有重複值的行
- 17. SQL - 返回所有包含未知數字序列的字段
- 18. Excel中返回一個值的SQL查詢使用兩行或多列?
- 19. T-SQL計算具有特定值的行(多個在一個查詢中)
- 20. SQL,將值邏輯返回到另一個查詢字段
- 21. Oracle SQL:僅返回包含在另一個表中的字段中的值
- 22. SQL - 子查詢返回多個值
- 23. SQL子查詢返回多個值
- 24. SQL查詢返回 「子查詢返回多個1行」
- 25. 查詢一個特定的多值字段爲主要實體
- 26. SQL查詢,其中一個特定的列應該有兩個特定的值,但只有一個
- 27. SQL查詢從一行中的單個表中返回多個鍵值對
- 28. SQL:將所有字段或多個查詢插入爲1查詢?
- 29. 查詢包含多個字段的字段
- 30. MS Access SQL查詢不同的返回多個字段
我發誓我昨天看到這個問題,但我找不到它。 – 2009-01-22 21:38:01
給我們提供更多信息。展開您的問題,只需點擊修改並執行即可。 ;) – Stefan 2009-01-22 21:42:02