目前分類:T-SQL (18)

瀏覽方式: 標題列表 簡短摘要
 

SQL 2012 新增的日期或是時間有關的函數

EOMONTH:選擇性位移,傳回包含指定日期的當月最後一天

小草 發表在 痞客邦 留言(0) 人氣()

T-SQL的程式碼是依序執行的

假設,一個預存程序C 裡面需要依序執行預存程序A、B

小草 發表在 痞客邦 留言(0) 人氣()

OPENQUERY ( linked_server ,'query' )
linked_server

這是代表連結伺服器名稱的識別碼。

' query '

這是在連結伺服器中執行的查詢字串。 該字串的最大長度是 8 KB。

小草 發表在 痞客邦 留言(1) 人氣()

  使用T-SQL查詢excel檔案中的資料是最省時省力的,執行前須確定SQL Server是否允許使用 OPENROWSET 和 OPENDATASOURCE 進行特定分散式查詢(參考註1)。由於需投過SQL Server讀取excel檔案中的資料,因此SQL Server執行帳號需要擁有存取該檔案的權限,可參考(註2)說明調整SQL Server啟動帳號。

建立excel檔案,在檔案內容建立以下資料。接著使用不同的

小草 發表在 痞客邦 留言(2) 人氣()

當 SET ANSI_NULLS 是 OFF 時,等於 (=) 和不等於 (<>) 比較運算子並不遵照 ISO 標準。

當 SET ANSI_NULLS 是 ON 時,使用 WHERE column_name = NULL 的 SELECT 陳述式會傳回零個資料列,即使 column_name 含有 Null 值,也是如此。使用 WHERE column_name <> NULL 的 SELECT 陳述式也會傳回零個資料列,即使 column_name 含有非 Null 值,也是如此。在將來的 SQL Server 版本中,ANSI_NULLS 一定會是 ON,而且明確將此選項設定為 OFF 的應用程式將會產生錯誤。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。
CREATE TABLE [dbo].[myEmployees](
        [EmployeeID] [int] IDENTITY(1,1) NOT NULL,
        [Name] [nvarchar](10) NOT NULL,
        [Title] [nvarchar](30) NULL,
        Sales INT NULL,
)
insert into myEmployees values
('Nancy','Sales Representative',100),
('Andrew','Sales Manager',200),
('Janet','Sales Representative',300),
('Margaret','Sales Representative',400),
('Sandy',NULL,500)
PRINT 'Testing default setting'
SELECT * FROM  myEmployees WHERE Title=NULL 
SELECT * FROM  myEmployees WHERE Title<>NULL 
SELECT * FROM  myEmployees WHERE Title IS NULL 

 

小草 發表在 痞客邦 留言(0) 人氣()

declare @numerics as table   
 
( row_id tinyint identity(1,1) primary key, numeric_val varchar(100))  
 
insert into @numerics(numeric_val)values  ('35.2'),(' 100.7(received tylenol per RN')
,('  120'),('100.6(@4pm)'),('92.4 orally'),('37.2(99.0)'),('35.3 C'),('-97.6')  

select n.numeric_val,  
try_convert(float, n.numeric_val) as nv_try_convert,  
isnumeric(n.numeric_val) as nv_isnumeric, case   
 when try_convert(float, n.numeric_val) is not null    
      then abs(try_convert(float, n.numeric_val))     
 when left(ltrim(n.numeric_val),4) like '[0-9][0-9].[0-9]'    
      then abs(try_convert(float, left(ltrim(n.numeric_val),4)))    
 when left(ltrim(n.numeric_val),5) like '[0-9][0-9][0-9].[0-9]'   
      then abs(try_convert(float, left(ltrim(n.numeric_val),5))) end as nv_try_convert_case   
 
from @numerics n

 

image

小草 發表在 痞客邦 留言(0) 人氣()

>>WITH RESULT SETS

 

小草 發表在 痞客邦 留言(0) 人氣()

當查詢的筆數過多時,不建議將所有的資料往用戶端送。因為傳送過多的資料,會讓有限的網路頻寬影響傳送的效能。此外,SQL Server需等待使用者端程式處理完一批資料後,才能傳送下一批,導致前端程式效能不佳,也拖累SQL Server。且取得過多的資料也會讓人無法分析,大量細節資料下傳意義不大。

基於上述原因,會視需要而將結果集分頁。舉例來說,假設符合條件的資料有1000筆,而網頁上每頁所呈現的資料為25筆資料。只要查詢當下各頁時,由資料庫中取得符合的25筆資料傳至用戶端即可。不需將1000 筆資料整批傳送至前端,再由前端程式挑出25筆記錄呈現。

以下使用不同版本的SQL Server撰寫預存程序提供的分頁功能示範如何將取得的資料集給與適當的編號,並透過參數指定每頁要呈現的資料筆數 。

適用版本:SQL 2012

小草 發表在 痞客邦 留言(0) 人氣()

資料欄位中有NULL值時,需要特別小心處理
否則查詢時,通常會被遺漏此筆資料

小草 發表在 痞客邦 留言(0) 人氣()

同事的需求,他區紐分析的欄位在每次查詢個過程中都會異動。上網Google了依些資訊之後,發現只能透過組字串的方式達到此功能。以下簡單的使用Northwind資料庫測試結果

image

小草 發表在 痞客邦 留言(0) 人氣()

  • 如果你想當個專業的DBA,那下列這些指令可不能不熟。更多詳細內容可參考線上說明
    sp_who

小草 發表在 痞客邦 留言(0) 人氣()

如何將逗號分隔的字串透過T-SQL回傳成一組DataSet呢。
例如輸入 Sandy,Marry,Dofi 一組字串時,回傳下列三筆資料 。

小草 發表在 痞客邦 留言(0) 人氣()

SQL 提供幾個實用的數學函數 Round、Floor、Ceiling函數處理數學運算中的四捨五入。不用特別去背者個指令,因為可以在物件總管內找到這些系統提供的數學函數,如下圖所示'。
image

範例:

小草 發表在 痞客邦 留言(2) 人氣()

如何將在位數不足的數字左側補零呢? 你可以考慮使用 SQL Server提供的字串處理函數 Replicate()指定補零的次數。
此函數的基本語法如下

小草 發表在 痞客邦 留言(0) 人氣()

USE Northwind
GO

小草 發表在 痞客邦 留言(0) 人氣()

CHECKSUM 會針對它的引數清單,來計算稱為總和檢查碼的雜湊值 
CHECKSUM可應用於比對兩個資料表內容,列出經過CHECKSUM後雜湊值不符的資料列。範例程式碼如下。

小草 發表在 痞客邦 留言(0) 人氣()


Use AdventureWorks

小草 發表在 痞客邦 留言(0) 人氣()

-----------------------------------------------
SQL Server 2005 查詢ideneity

小草 發表在 痞客邦 留言(0) 人氣()