Microsoft sql 2008字符串格式

时间:2012-02-03 18:35:55

标签: sql-server string sql-server-2008 format

我想知道Microsoft SQL 2008中是否存在某些内容,它可以在C#中执行类似的操作

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

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

基本上,MS SQL 2008中是否可以使用String.Format()?

让它更清楚。我想动态创建一个表,所以需要为列生成字符串,比如

"Col1 FLOAT, Col2 FLOAT. Col3 FLOAT"

列的数量由变量指定,所以我想知道是否有一个函数来执行String.Format(),所以我可以在循环中使用。

理想情况下,我想编写一个存储过程,然后传入

"Col{0} Float"

3 个答案:

答案 0 :(得分:2)

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

Select @columnName + CONVERT(varchar(10), @variable) + ' ' + @columnType
你去吧。将变量赋值给你的int值并在循环中运行,或者你可以在sql中创建该循环。我会在sql中这样做而不是来回。但这取决于你的逻辑。

答案 1 :(得分: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, '')  

答案 2 :(得分:0)

您只是将文本连接到列,以便您可以使用+:

SELECT "Employee Name" + EmployeeName AS EmployeeName FROM MyTable

您必须注意使用+,具体取决于数据类型,但始终有CASTCONVERT来帮助您将数据类型转换为特定类型。