首頁 > 軟體

SQL Server系統函數介紹

2022-05-27 14:04:14

一、常用函數:

  • APP_NAME: 返回當前對談的應用程式名稱(如果應用程式進行了設定)。
SELECT APP_NAME()
  • COALESCE: 返回其引數中第一個非空表示式
SELECT COALESCE(NULL,NULL,123,NULL)
  • COL_LENGTH(table,column):返回table表中column欄位的長度;
SELECT COL_LENGTH('person','gender'),COL_LENGTH('person','FirstName');
  • COL_NAME(TABLE_ID,COLUMN_ID):返回指定表中指定欄位的名稱;
SELECT COL_NAME(OBJECT_ID('person'),1);---返回person表中第1個欄位的名稱;
  • COLLATIONPROPERTY: 返回給定排序規則的屬性
  • CURRENT_TIMESTAMP: 返回當前的日期和時間。此函數等價於 GETDATE()
  • CURRENT_USER: 返回當前的使用者。

此函數等價於 USER_NAME()

SELECT CURRENT_USER
  • DATALENGTH(x): 返回欄位x的資料的實際長度,即位元組數,NULL的長度為NULL;
SELECT DATALENGTH('id'),DATALENGTH('Gender') FROM person WHERE id=2;
  • @@ERROR: 返回最後執行的 Transact-SQL 語句的錯誤程式碼
  • fn_helpcollations: 返回 Microsoft® SQL Server™ 2000 支援的所有排序規則的列表。
  • fn_servershareddrives: 返回由群集伺服器使用的共用驅動器名稱
  • fn_virtualfilestats: 返回對資料庫檔案(包括紀錄檔檔案)的 I/O 統計
  • FORMATMESSAGE: 從 sysmessages 現有的訊息構造訊息。

FORMATMESSAGE 與 RAISERROR 語句的功能相似;但 RAISERROR 立即輸出訊息而 FORMATMESSAGE: 返回編輯後的資訊供進一步處理

  • GETANSINULL: 返回對談的資料庫的預設為空性。

該函數對ANSI空值NULL返回1,如果沒有定義ANSI空值NULL,則返回0;

SELECT GETANSINULL('test2'),GETANSINULL('person'); ---test2是資料庫,person是資料表;
  • HOST_ID: 返回工作站標識號。

返回值型別為CHAR(10);

SELECT HOST_ID();   --使用該函數可以記錄那些想資料表中插入資料的計算機終端的ID;
  • HOST_NAME: 返回工作站名稱。
SELECT HOST_NAME();
  • IDENT_INCR: 返回增量值(返回形式為 numeric(@@MAXPRECISION,0)),該值是在帶有標識列的表或檢視中建立標識列時指定的
  • IDENT_SEED: 返回種子值(返回形式為 numeric(@@MAXPRECISION,0)),該值是在帶有標識列的表或檢視中建立標識列時指定的
  • IDENTITY(函數): 只用在帶有 INTO table 子句的 SELECT 語句中,以將標識列插入到新表中。

儘管類似,但是 IDENTITY 函數不是與 CREATE TABLE 和 ALTER TABLE 一起使用的 IDENTITY 屬性。(自動採番時可以起到作用)

  • ISDATE: 確定輸入表示式是否為有效的日期
  • ISNULL: 使用指定的替換值替換 NULL
SELECT AVG(ISNULL(id,0)) FROM dbo.school AS s
  • ISNUMERIC: 確定表示式是否為一個有效的數位型別
PRINT ISNUMERIC('1223A')
  • NEWID: 建立 uniqueidentifier 型別的唯一值
  • NULLIF: 如果兩個指定的表示式相等,則返回空值。
SELECT NULLIF('AA','AA')
  • PARSENAME: 返回物件名的指定部分。可以檢索的物件部分有物件名、所有者名稱、資料庫名稱和伺服器名稱
  • PERMISSIONS: 返回一個包含點陣圖的值,表明當前使用者的語句、物件或列許可權。
  • @@ROWCOUNT: 返回受上一語句影響的行數
  • ROWCOUNT_BIG: 返回受執行的最後一個語句影響的行數。該函數的功能與 @@ROWCOUNT 一樣,除非 ROWCOUNT_BIG 的返回型別是 bigint。
  • SERVERPROPERTY: 返回有關伺服器範例的屬性資訊
  • SESSIONPROPERTY: 返回對談的 SET 選項設定
  • SESSION_USER: 是一個 niladic 函數,允許在未指定預設值時將系統為當前對談的使用者名稱提供的值插入到表中。還允許在查詢、錯誤資訊等中使用使用者名稱
  • SCHEMA_NAME: 檢視Schema的ID和Name
  • STATS_DATE: 返回最後一次更新指定索引統計的日期
SELECT STATS_DATE(OBJECT_ID('school'),1)
  • SYSTEM_USER: 返回當前系統使用者名稱
  • SUSER_ID():根據登入名返回使用者的SID(安全標識號)
SELECT SUSER_SID(),SUSER_SID('COMPUAdministrator'); --不帶引數時返回當前使用者的ID,也可以帶引數指定使用者;
  • SUSER_SNAME():返回與安全識別符號關聯的登入名

返回值型別為NVARCHAR(128);

SELECT SUSER_SNAME(),SUSER_SNAME(0x010500000000000515000000C1289E4023B53F66B8323512E9030000);
  • @@TRANCOUNT: 返回當前連線的活動事務數
  • USER_ID():根據指定使用者名稱返回資料庫使用者的ID,

如果沒有指定使用者名稱,則返回當前使用者的資料庫ID;

SELECT USER_ID();
  • USER_NAME():根據與資料庫使用者關聯的ID返回資料庫使用者名稱,

返回值型別為nvarchar(256);

SELECT USER_NAME(),USER_NAME(USER_ID());

二、插入後返回值的方法:

  • SCOPE_IDENTITY: 返回為當前對談和當前作用域中的任何表最後生成的標識值。 SELECT SCOPE_IDENTITY();(推薦)
  • @@IDENTITY: 返回為當前對談的所有作用域中的任何表最後生成的標識值。 SELECT @@Identity;
  • IDENT_CURRENT: 返回為任何對談和任何作用域中的特定表最後生成的標識值。SELECT IDENT_CURRENT('table_name');

到此這篇關於SQL Server系統函數的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com