首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 進階小技巧五則:半位捨入、逗號清單查詢、分頁、大小寫敏感比對、跨伺服器預存程序呼叫

     編輯:關於SqlServer

技巧 1:四捨五入到最近 0.5 (半位捨入)

DECLARE @t FLOAT = 100.74
SELECT ROUND(@t * 2.0, 0) / 2.0  -- 結果 100.5
  • 100.24 → 100.0;100.26 → 100.5
  • 100.74 → 100.5;100.76 → 101.0

技巧 2:以逗號分隔字串直接用於 WHERE IN

DECLARE @xVar VARCHAR(50) = 'anne,janet,nancy,andrew,robert'
SELECT * FROM employees
WHERE @xVar LIKE '%' + firstname + '%'

利用 LIKE 反向比對,避免動態 SQL 或字串分割函數。注意:若名稱可能互為子字串(如 an / anne)會誤判,嚴謹場景請用分割函數或 STRING_SPLIT (SQL 2016+)。

技巧 3:簡單分頁 (相對定位法)

SELECT * FROM products a
WHERE (SELECT COUNT(*) FROM products b WHERE a.productid >= b.productid) BETWEEN 15 AND 16

適用於主鍵連續、資料量中小的情境;大資料量請用 OFFSET/FETCH (SQL 2012+) 或 ROW_NUMBER()。

技巧 4:單一陳述式進行大小寫敏感比較

SELECT * FROM products
WHERE productname COLLATE SQL_EBCDIC280_CS_AS = 'Chai'
  • CS = Case Sensitive,AS = Accent Sensitive
  • 查詢所有定序:SELECT * FROM ::fn_helpcollations()

技巧 5:呼叫異地伺服器的預存程序

-- 1. 建立連結伺服器
EXEC sp_addlinkedserver '172.16.0.22', N'SQL Server'
GO

-- 2. 設定發佈/安全性 (視需求)
EXEC sp_link_publication @publisher = '172.16.0.22',
    @publisher_db = 'Northwind', @publication = 'NorthWind',
    @security_mode = 2, @login = 'sa', @password = 'sa'
GO

-- 3. 四段式名稱呼叫
EXEC [172.16.0.22].northwind.dbo.CustOrderHist 'ALFKI'
GO

-- 4. 移除連結伺服器
EXEC sp_dropserver '172.16.0.22', 'droplogins'
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved