2012-02-03 23 views
1

我不知道是否有東西在微軟SQL 2008,它可以做類似的事情,在C#微軟SQL 2008的字符串格式化

for(int i = 0; i < 10; ++i) 

    String.Format("ABC {0} XYZ", i.ToString()); 

基本上,是的String.Format()可以在MS SQL 2008?

只是使其更清楚。我想dynamicaly創建一個表,所以需要生成列字符串,如

"Col1 FLOAT, Col2 FLOAT. Col3 FLOAT" 

由變量指定的列數,所以我不知道是否有一個函數來做到的String.Format() ,所以我可以在循環中使用。

Idealy,我想寫一個存儲過程,並通過在

"Col{0} Float" 
+3

選擇「ABC」+ columnName? – AJP 2012-02-03 18:37:57

+0

請查看更新的答案。 – AJP 2012-02-03 18:58:10

回答

0

下一個版本有FORMAT功能也可以滾動在SQL Server 2008中你自己的CLR函數調用.NET框架格式的方法,但對於你陳述的用例,我只會使用類似下面的東西。

DECLARE @ColList varchar(max) = 
       (SELECT ',Col',number+0,' FLOAT' 
       FROM master..spt_values 
       WHERE type = 'P' 
         AND number BETWEEN 1 AND 10 
       FOR XML PATH('')) 

SELECT STUFF(@ColList, 1, 1, '') 
0

你只是串聯文本到列,所以你可以使用+的:

SELECT "Employee Name" + EmployeeName AS EmployeeName FROM MyTable

你必須使用+儘管這取決於數據類型看出來,但有總是CASTCONVERT可幫助您將數據類型轉換爲特定類型。

2
Declare @variable INT 
Declare @columnName varchar(50) 
Declare @columnType varchar(10) 

Select @columnName + CONVERT(varchar(10), @variable) + ' ' + @columnType 

這裏你去。將變量賦值給你的int值並在循環中運行,或者你可以在sql中創建該循環。我會在SQL中做到這一點,而不是來回。但這取決於你的邏輯。