EX : Select Right('00000000' + Cast(123 as varchar),8) > '00000123'
參考自 : The Will Will Blog
http://blog.miniasp.com/post/2010/05/T-SQL-Tips-Fixed-Length-Number-with-Zero-Padded.aspx
EX : Select Right('00000000' + Cast(123 as varchar),8) > '00000123'
參考自 : The Will Will Blog
http://blog.miniasp.com/post/2010/05/T-SQL-Tips-Fixed-Length-Number-with-Zero-Padded.aspx
SQL Server 本機用 Enterprise Manager 用 工具->選項->進階,加大逾時秒數。
或是用指令
USE master
GO
EXEC sp_configure 'remote query timeout', 1200
GO
RECONFIGURE
GO
1200 代表的是秒(SQL Server預設是 600 秒,),設為0表示永不愈時。
想把Select的資料,直接轉換成Insert的SQL語法,到另一台電腦的DB執行嗎? 可以使用免費的工具程式 SQL Dumper
比如 : Select * From Table1 直接轉成 =>
Insert Into Table1('A1','A2','A3',....)
Insert Into Table1('B1','B2','B3',....)
Insert Into Table1('C1','C2','C3',....)
........
SQL Server Dumper 下載官網 : http://www.ruizata.com/
IF EXISTS (SELECT * FROM Table1)
BEGIN
...............
END
ELSE
BEGIN
.............
END
簡短語法
DUMP TRANSACTION Northwind WITH NO_LOG
完整語法
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE Northwind -- 要操作的資料庫名
SELECT @LogicalFileName = 'Northwind_Log', -- 日誌文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 100 -- 你想設定的日誌文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size
FROM sysfiles
WHERE name = @LogicalFileName
SELECT 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
INSERT DummyTrans VALUES ('Fill Log')
DELETE DummyTrans
SELECT @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF
本文引用 : 藍色小惡魔 http://www.imp.idv.tw/play/forum/viewthread?thread=990
要直接在SQL語法中改變日期格式,Convert() 函式提供了一些方法,加上dateadd(),substring() 可以達成大部份改變日期格式的需求...
假設 getdate() = '2009/4/9'
Select Convert(char(10),getdate(),111)
-- =2009/04/09 (YYYY/MM/DD)
Select Convert(char(6),getdate(),112) ,
-- =200904 (YYYYMM)
Select Convert(char(8),getdate(),11)
-- =09/04/09 (YY/MM/DD)
Select Convert(char(8),getdate(),12)
-- =090409 (YYMMDD)
Select Convert(Char(08),dateadd(month, 1, getdate()),111) +'01'
-- =2009/05/01 (下月一號)
Select Convert(char(10),dateadd(day,-day(getdate()),dateadd(month,1,getdate())),111)
-- =2009/04/30(本月月底)(本月最後一天)
select Convert(char(10),dateadd(day,-day(getdate()),dateadd(month,2,getdate())),111)
-- =2009/05/31(下月月底)
UPDATE table1
SET table1.col = table2.col1
FROM table2 WHERE table2.oldCol = table1.col
大部份處理資料庫程式的人,都會遇到 Null 的問題,這時候如果在建立Table時,設為 Not Null ,並設定預設值為空白就好了,方法也很簡單,只要在設計預設值(Defaut Value)設為 (''),就可以了.....
ex :
CREATE TABLE [MEMBERS] (
[FirstName] [varchar] (50) NOT NULL DEFAULT ('')
)
如果想查詢一段文字有幾個字元,或是想知道實際存放在 Varchar() 欄位裡的資料有多大,len() 是個很好用的函數,直接看範例吧!
ex:
Select len('123 456 789')
Select len(FirstName),FirstName From MEMBERS
以資料表 Employees 為範例的話,在 MS SQL 有下列兩種方式 :
1. Select
select name from syscolumns where id=object_id('Employees')
2. 執行系統預存程序
exec sp_help Employees
假設資料表內有許多重覆的資料欄,但只有日期欄位不同,如果不想用 Group By 一個個分組,要如何列出資料中日期最大的呢?
範例:
Table:Order
ID | Title | Price | Date |
1 | K1 | 100 | 2008/07/01 |
1 | K1 | 200 | 2006/11/23 |
2 | B1 | 300 | 2008/01/01 |
3 | C2 | 400 | 2008/02/02 |
Select * From Order a Where Date = (Select Max(b.Date) From Order b Where a.ID = b.ID)
結果 :
ID | Title | Price | Date |
1 | K1 | 100 | 2008/07/01 |
2 | B1 | 300 | 2008/01/01 |
3 | C2 | 400 | 2008/02/02 |