sql >> データベース >  >> RDS >> Sqlserver

DBMS_METADATA.GET_DDLと同等のSQLServer

    このクエリを生成クエリに使用していますが、これは1つのテーブルで機能します:

    declare @vsSQL varchar(8000)
    declare @vsTableName varchar(50)
    select @vsTableName = 'Customers'
    
    select @vsSQL = 'CREATE TABLE ' + @vsTableName + char(10) + '(' + char(10)
    
    select @vsSQL = @vsSQL + ' ' + sc.Name + ' ' +
    st.Name +
    case when st.Name in ('varchar','varchar','char','nchar') then '(' + cast(sc.Length as varchar) + ') ' else ' ' end +
    case when sc.IsNullable = 1 then 'NULL' else 'NOT NULL' end + ',' + char(10)
    from sysobjects so
    join syscolumns sc on sc.id = so.id
    join systypes st on st.xusertype = sc.xusertype
    where so.name = @vsTableName
    order by
    sc.ColID
    
    select substring(@vsSQL,1,len(@vsSQL) - 2) + char(10) + ')'
    


    1. SQL関数の最初の結果のみを置き換える方法

    2. Oracle:文字列の連結が長すぎます

    3. 日付別のMySQL累積合計注​​文

    4. Laravelが参加し、複数のテーブルから選択します