动态传给数据库一个以字段名组成的数组,怎样根据数组生成表格字段并创建表格?

数据格式如下:
t1;t2;t3;t4;t5;t6;t7;t8;t9;t10;t11;t12;t13;t14;
ps:字段名没有相似点,只用分号进行隔开
创建的字段类型都是NVARCHAR类型
数据库是sql2000或者2005

在 SQL Server 2000 或 2005 中,可以使用 "CREATE TABLE" 语句来创建一张表,并使用 "NVARCHAR" 数据类型来定义字段。


首先,需要将字符串分割成字段名数组。

然后,可以使用循环遍历字段名数组,并在 "CREATE TABLE" 语句中动态生成字段定义。


示例代码如下:

DECLARE @fields AS NVARCHAR(MAX) = 't1;t2;t3;t4;t5;t6;t7;t8;t9;t10;t11;t12;t13;t14;'

DECLARE @field_list AS NVARCHAR(MAX) = ''

DECLARE @table_name AS NVARCHAR(255) = 'MyTable'

-- split the fields string into an array
DECLARE @fields_array AS NVARCHAR(MAX)

SELECT @fields_array = @fields

-- loop through the fields array and create field definition
DECLARE @field_name AS NVARCHAR(255)

WHILE LEN(@fields_array) > 0
BEGIN
    SELECT @field_name = LEFT(@fields_array, 
                             ISNULL(NULLIF(CHARINDEX(';', @fields_array) - 1, -1),
                                    LEN(@fields_array)))

    SELECT @field_list = @field_list +
                        @field_name + ' NVARCHAR(255),'

    SELECT @fields_array = SUBSTRING(@fields_array,
                                     ISNULL(NULLIF(CHARINDEX(';', @fields_array), 0),
                                            LEN(@fields_array)) + 1, LEN(@fields_array))
END

-- remove the last ',' from the field list
SELECT @field_list = LEFT(@field_list, LEN(@field_list) - 1)

-- create the table
DECLARE @create_table_sql AS NVARCHAR(MAX)

SET @create_table_sql = 'CREATE TABLE ' + @table_name + ' (' + @field_list + ')'

EXEC (@create_table_sql)

该代码使用分号来分割字段,并在循环中将字段添加到字段列表中,并在结束时删除最后一个逗号。最后,生成的字段列表被添加到 "CREATE TABLE" 语句中,并使用 "EXEC" 语句执行创建表的语句。


请注意,上述示例代码中所有字段都将使用 "NVARCHAR(255)" 类型创建。如果需要,可以在循环中根据需要更改字段类型。
此外,该示例代码将表命名为 "MyTable",如果需要,也可以根据需要更改表名。


还需要注意的是这段代码是在T-SQL语言环境下运行的。如果是通过应用程序连接数据库并执行,请根据应用程序支持的语言进行修改。