是否有可能使用一個SQL語句,多個表進行截斷?在一個MySQL語句中截斷多個表
像這樣:
truncate table #OBJ_AvailabilityTraining, #OBJ_AvailabilityHoliday, #Dates_temp;
問候
是否有可能使用一個SQL語句,多個表進行截斷?在一個MySQL語句中截斷多個表
像這樣:
truncate table #OBJ_AvailabilityTraining, #OBJ_AvailabilityHoliday, #Dates_temp;
問候
不行,你只能用截斷TRUNCATE命令一個表。要截斷多個表,可以使用T-SQL並遍歷表名以逐個截斷每個表。
DECLARE @delimiter CHAR(1),
@tableList VARCHAR(MAX),
@tableName VARCHAR(20),
@currLen INT
SET @delimiter = ','
SET @tableList = 'table1,table2,table3'
WHILE LEN(@tableList) > 0
BEGIN
SELECT @currLen =
(
CASE charindex(@delimiter, @tableList)
WHEN 0 THEN len(@tableList )
ELSE (charindex(@delimiter, @tableList ) -1)
END
)
SELECT @tableName = SUBSTRING (@tableList,1,@currLen)
TRUNCATE TABLE @tableName
SELECT tableList =
(
CASE (len(@tableList) - @currLen )
WHEN 0 THEN ''
ELSE right(@tableList, len(@tableList) - @currLen - 1)
END
)
END
你可以在@tableList可變逗號分隔所有的表名和是的,你可以從不同的模式,如果他們的前綴截斷多個表。
你可以使用像這樣的sp_MSforeachtable存儲過程:
USE MyDatabase
EXEC sp_MSforeachtable 'TRUNCATE TABLE ?'
或者,您可以創建SQL語句
SELECT concat('TRUNCATE TABLE ', TABLE_NAME, ';')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'TableName%'
和運行這個上面的SQL語句
完美,正是我期待的 - 謝謝! – maialithar 2014-04-02 17:47:42
完美。我在SSIS中使用exec sql來獲取列表和一個foreach循環遍歷每一個。我想你可以在SSMS中用光標做同樣的事情。 – KeithL 2017-11-07 15:07:05
號但是,還有另一種:
SELECT 'TRUNCATE TABLE '+TABLE_NAME+ ';'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'your-table-name%'
例子:
SELECT 'TRUNCATE TABLE '+TABLE_NAME+ ';'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'TBL_ORDERS_20%'
現在你有以下結果上述Select
查詢
TRUNCATE TABLE TBL_ORDERS_2001
TRUNCATE TABLE TBL_ORDERS_2002
TRUNCATE TABLE TBL_ORDERS_2003
TRUNCATE TABLE TBL_ORDERS_2004
,或者您可以使用類似
select 'Truncate table ' + TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME in ('Table1', 'Table2')
更新:
看着表在你的榜樣Query
在你的問題
truncate table #OBJ_AvailabilityTraining, #OBJ_AvailabilityHoliday, #Dates_temp
我想你想Truncate
所有臨時表。
你可以用一個簡單的Query
這樣
select 'Truncate table ' + TABLE_NAME from tempdb.INFORMATION_SCHEMA.TABLES
獎金例如這樣做,截斷所有表在一個數據庫中開始用繩子...
SELECT CONCAT('TRUNCATE TABLE ', TABLE_NAME, ';')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'my_database_name'
AND TABLE_NAME LIKE 'cache_%';
嗯...這實際上工作? – 2016-06-19 23:14:22