我想知道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"
答案 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
您必须注意使用+,具体取决于数据类型,但始终有CAST
和CONVERT
来帮助您将数据类型转换为特定类型。