簡體   English   中英

SQL Server在不知道列名的情況下從表中選擇數據

[英]SQL Server Select data from table without knowing column names

這是樣本數據表。

在此處輸入圖片說明

我想選擇任何具有行名的行或任何列(等於)= 200的值。但是我們不知道列名

如果您知道表名,則可以使用SQLServer 2005或更高版本查詢INFORMATION_SCHEMA.TABLESINFORMATION_SCHEMA.COLUMNS ,或者使用SQLServer 2000來查詢sysobjectssyscolumns來檢索表列,之后,您可以根據需要創建完全引用的查詢

我認為下面的T-SQL將為您提供所需的東西。 它是針對AdventureWorks2012LT編寫的。 將來,您可以通過在問題中包含SQL create語句來獲得更具體的幫助(這樣,響應者就​​不必重新創建表了)(順便說一句,我的示例正在查找包含字母“ S”的任何字段)

DECLARE @column_name nvarchar(200);
DECLARE @statement nvarchar(max);

DECLARE @results TABLE(
id int,
colname nvarchar(200),
value nvarchar(max)
)

DECLARE col_cursor CURSOR FOR
SELECT C.COLUMN_NAME AS col
FROM INFORMATION_SCHEMA.COLUMNS C WHERE C.TABLE_NAME LIKE 'Address'

OPEN col_cursor
FETCH NEXT FROM col_cursor INTO @column_name

WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @column_name
SELECT @statement = N'SELECT AddressID, ''' + @column_name + ''' AS ColName, ' + @column_name + ' AS value FROM SalesLT.[Address] WHERE ' + @column_name + ' LIKE ''%S%''';

INSERT INTO @results
EXEC(@statement);

FETCH NEXT FROM col_cursor INTO @column_name
END

CLOSE col_cursor
DEALLOCATE col_cursor

SELECT * FROM @results

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM