Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách tạo cột bảng tạm thời và kiểu dữ liệu tự động thông qua tập lệnh

điều này có thể giúp bạn bắt đầu:

DECLARE @viewname VARCHAR(50);
SET @viewname ='tableorviewname';
SELECT  c.name + ' '+ t.name + 
case t.name  
WHEN 'varchar' THEN '('+CAST(c.max_length AS VARCHAR(3) )+'),'
ELSE ',' 
end
FROM sys.columns c
INNER JOIN sys.types AS t ON c.system_type_id = t.system_type_id
WHERE object_id = (SELECT object_id from sys.objects where name = @viewname)
ORDER BY c.column_id

CHỈNH SỬA:TEMP BẢNG:

bảng tạm thời hơi khác một chút, ví dụ như bảng này hoạt động trong sql 2008 cho bảng tạm có tên #tv_source

DECLARE @viewortablename VARCHAR(50);
SET @viewortablename ='tempdb..#tv_source';
SELECT  c.name + ' '+ t.name + 
case t.name  
WHEN 'varchar' THEN '('+CAST(c.max_length AS VARCHAR(3) )+'),'
ELSE ',' 
end
FROM tempdb.sys.columns c
INNER JOIN sys.types AS t ON c.system_type_id = t.system_type_id
WHERE object_id =  object_id(@viewortablename)
ORDER BY c.column_id

LƯU Ý:điều này cung cấp một danh sách được phân tách bằng dấu phẩy, nhưng KHÔNG cố gắng xóa dấu phẩy cuối cùng đó, nó chỉ cung cấp một danh sách mà bạn có thể muốn đặt vào một chuỗi và thao tác, v.v. sau đó sử dụng như một sql động hoặc somthing. Tuy nhiên, nó sẽ giúp bạn bắt đầu những gì bạn muốn làm.

LƯU Ý đối với những người khác, sql 2000 sẽ không hiển thị độ dài chính xác, chẳng hạn như trên varchar (45), nó sẽ chỉ liệt kê phần varchar và tôi đã không cố gắng làm lại phần đó cho câu hỏi này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giám sát TempDB SQL Server bằng cách sử dụng chế độ xem quản lý động (DMV)

  2. Làm cách nào để xóa các ký tự ASCII mở rộng khỏi một chuỗi trong T-SQL?

  3. Kết nối XML mà không truyền kiểu thành chuỗi

  4. Định vị bảng và biểu đồ trong BIDS SSRS

  5. chuyển đổi dấu thời gian Epoch sang máy chủ sql (định dạng con người có thể đọc được)