T-SQL系统函数提供了一些跟数据库对象有关的信息。大部分系统函数用的是内部数字标识符(ID),系统将标识赋值给每个数据库对象。使用这类标识符,系统就能独立识别每个数据库对象。
1、CAST(a as type[(length)]),将表达式a转换指定的数据类型type,如果转换失败将报ERROR。
例:SELECT CAST('123' as int); 结果为123
2、COALESCE(a1,a2,…),返回给定清单上的表达式a1,a2…,第一个不为NULL的表达式值。
例:SELECT COALESCE('a1','a2'); 结果为’a1’
SELECT COALESCE(NULL,'a2'); 结果为’a2’
3、COL_LENGTH(obj,col),返回col列的长度,该长度值属于数据库对象(表或视图)obj。
例:SELECT COL_LENGTH('customers','cust_ID');结果为10
4、CONVER(type[(length)],a),和CAST相等,但是对这两个参数指定条件不同。COVERT能用于任何数据类型。
例:SELECT CONVERT(int,'123'),结果为123
5、CURRENT_TIMESTAMP,返回目前的日期和时间。
例:SELECT CURRENT_TIMESTAMP,结果为2010-05-19 17:25:39.437
6、CURRENE_USER,返回目前用户的姓名。
例:SELECT CURRENT_USER; 结果为’dbo’
7、 DATALENGTH(expr),计算表达式expr的结果长度(字节)。
例:SELECT DATALENGTH(ProductName) from products; 结果返回每条记录对应ProductName的数据长度。
8、GETANSINULL(dbname),如果按照ANSI SQL标准在数据库dbname中使用NULL值,那么返回值为1
例:SELECT GETANSINULL('TEST'); 结果为1
9、ISNULL(expr,value),如果表达式expr不为0,就返回expr值;否则返回value。
例:SELECT ISNULL('a','b'); 结果为’a’
SELECT ISNULL(NULL,'b'); 结果为’b’
10、ISNUMERIC(expr),判断表达式是否属于有效的数字型。如果是有效数字型返回1,否则返回0
例:SELECT ISNUMERIC(123); 结果为1
SELECT ISNUMERIC('a'); 结果为0
11、NEWID(),创建有16个字节组成的二进制字符串存储UNIQUEINENTIFIER数据类型。
12、NEWSEQUENTALID(),在指定的计算机上创建GUID,它比该函数之前产生的GUID值要大。可以利用该函数设置字段的默认值。
13、NULLIF(expr1,exprs),如果表达式expr1和expr2相等,返回NULL值。否则返回expr1值。
例:SELECT NULLIF('a','a'); 结果为NULL
SELECT NULLIF('a','b'); 结果为’a’
14、SERVERPROPERTY(propertyname),返回数据库服务器的属性信息。
propertyname的值如下:
属性 |
返回值 |
BuildVersion |
生成 SQL Server 实例时使用的 .NET Framework 公共语言运行时 (CLR) 的版本. |
Collation |
服务器的默认排序规则名称。 |
CollationID |
SQL Server 排序规则的 ID。 |
ComparisonSytle |
排序规则的 Windows 比较样式。 |
ComputerNamePhysicalNetBIOS |
前运行 SQL Server 实例的本地计算机的 NetBIOS 名称。 |
Edition |
所安装的 SQL Server 实例的产品版本。 |
EditionID |
标识号,表示已安装的 SQL Server 实例的产品版本 |
EngineEdition |
服务器上安装的 SQL Server 实例的数据库引擎版本。 |
InstanceName |
用户连接到的实例的名称。 |
IsClustered |
在故障转移群集中配置服务器实例。 |
IsFullTextInstalled |
在 SQL Server 的当前实例中安装全文组件。 |
IsIntegratedSecurityOnly |
服务器处于集成安全性模式下。 |
IsSingleUser |
服务器处于单用户模式下。 |
LCID |
排序规则的 Windows 区域设置标识符 (LCID)。 |
LicenseType |
此 SQL Server 实例的模式。 |
MachineName |
运行服务器实例的 Windows 计算机名称。 |
NumLicenses |
如果处于每客户模式下,则为该 SQL Server 实例的注册客户端许可数。 如果处于每处理器模式下,则为该 SQL Server 实例的许可处理器数。 如果服务器不是上述模式,则返回 NULL。 |
ProcessID |
SQL Server 服务的进程 ID。 |
ProductVersion |
SQL Server 实例的版本 |
ProductLevel |
SQL Server 实例的版本级别。 |
ResourceLastUpdateDateTime |
返回资源数据库上次更新的日期和时间。 |
ResourceVersion |
返回版本资源数据库。 |
ServerName |
Windows 服务器和与指定的 SQL Server 实例关联的实例信息。 |
SqlCharSet |
排序规则 ID 中的 SQL 字符集 ID。 |
SqlCharSetName |
排序规则中的 SQL 字符集名称。 |
SqlSortOrder |
排序规则中的 SQL 排序顺序 ID |
SqlSortOrderName |
排序规则中的 SQL 排序顺序名称。 |
FilestreamShareName |
FILESTREAM 使用的共享的名称。 |
FilestreamConfiguredLevel |
FILESTREAM 访问的配置级别 |
FilestreamEffectiveLevel |
FILESTREAM 访问的有效级别 |
例:SELECT SERVERPROPERTY('BuildClrVersion'); 结果为’ v2.0.50727’
15、SYSTEM_USER,返回目前用户的登录ID
例:SELECT SYSTEM_USER; 结果为当前用户名
16、USER_ID([user_name]),返回用户user_name的标识符,如果没有指定user_name,就返回当前用户的标识符。
例:SELECT USER_ID('guest'); 结果为2
17、USER_NAME([id]),返回带有标识符id的用户名字;如果没有指定用户名,就检索当前用户的名字。
例:SELECT USER_NAME(2); 结果为’guest’