缄默默默 2013-08-13 06:03 采纳率: 0%
浏览 1045

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

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

  • 写回答

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语言环境下运行的。如果是通过应用程序连接数据库并执行,请根据应用程序支持的语言进行修改。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog