数据格式如下:
t1;t2;t3;t4;t5;t6;t7;t8;t9;t10;t11;t12;t13;t14;
ps:字段名没有相似点,只用分号进行隔开
创建的字段类型都是NVARCHAR类型
数据库是sql2000或者2005
动态传给数据库一个以字段名组成的数组,怎样根据数组生成表格字段并创建表格?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答
- ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-12 13:15关注
在 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语言环境下运行的。如果是通过应用程序连接数据库并执行,请根据应用程序支持的语言进行修改。
解决 无用评论 打赏 举报