缄默默默 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 luckysheet
  • ¥25 关于##爬虫##的问题,如何解决?:
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题