SQL Server 2005中是否有一種有效的方法將一行數據讀入字符串?T SQL將行轉換爲字符串
例如,如果我的表看起來像下面這樣:
ID | First Name | Last Name | Color
-----------------------------------
1 | Timmy | Jones | pink
2 | Martha | Fisher | green
那我能拿回來的結果:
'1 Timmy Jones pink'
'2 Martha Fisher green'
最好我能回來與附加諸如列名:
'ID: 1, First Name: Timmy, Last Name: Jones, Color: pink'
'ID: 2, First Name: Martha, Last Name: Fisher, Color: green'
更新:
我正在尋找一個動態的解決方案,所以我想查詢INFORMATION_SCHEMA會更合適。
這實際上有點幫助,因爲我期待從更新觸發器設置它,所以我將一次一行,並且我可以根據INFORMATION_SCHEMA查詢主表檢查數據類型以消除文本,生成的表格「插入」和「刪除」扼殺的ntext和圖像。
解決方案:(更新:不得不添加更多的代碼返回一個值)
-- passed in table name & schema
DECLARE @table_name nvarchar(100)
DECLARE @schema_name nvarchar(100)
-- set initial value
SET @table_name = 'my_table'
SET @schema_name = 'dbo'
-- Variable to hold query
DECLARE @sql nvarchar(MAX)
SET @sql = 'SELECT @row_stringOUT = '
-- Query columns meeting criteria and build query
SELECT
-- Query as one string
@sql = (@sql + ' '' ' + COLUMN_NAME + ': '' + CASE WHEN ' + COLUMN_NAME + ' IS NULL THEN '''' WHEN ISDATE(' + COLUMN_NAME + ') = 1 THEN CONVERT(nvarchar(100), ' + COLUMN_NAME + ', 120) ELSE CAST(' + COLUMN_NAME + ' AS nvarchar(100)) END + ')
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
table_schema = @schema_name
AND
table_name = @table_name
AND
-- Filter out unuseable data types
data_type NOT IN ('text', 'ntext', 'image')
-- Trim extra character before FROM statement then add FROM statement
SELECT @sql = LEFT(@sql, LEN(@sql) - 1) + ' FROM ' + @table_name;
-- Execute Query
DECLARE @params nvarchar(MAX)
SET @params = N'@row_stringOUT ntext OUTPUT';
DECLARE @ret_value nvarchar(MAX)
EXEC sp_executesql
@sql
, @params
, @row_stringOUT = @ret_value OUTPUT
SELECT @ret_value
我正在尋找一個動態的解決方案,所以我猜INFORMATION_SCHEMA是它的位置。 – databyss 2010-01-21 14:29:52