符号

注释符

注释符 释义
SQL注释风格
;%00 空字节
/* C注释风格

常用运算符

运算符 释义
+ 加法运算
- 减法运算
* 乘法运算
/ 除法运算
% 取模运算
& 位与逻辑运算
| 位或逻辑运算

常见全局变量

变量 释义
@@VERSION SQL Server 版本
@@SEVERNAME 运行SQL Server 的本地服务器名称

函数

系统函数信息

函数 释义
DB_NAME() 获取当前数据库名
USER_NAME() / USER 获取用户在数据库中的名字
is_srvrolemember(‘sysadmin’)
is_srvrolemember(‘db_owner’)
is_srvrolemember(‘public’)
判断当前用户权限

进制转换

函数 释义
ASCII(str) 返回字符表达式最左端字符的ASCII 码值
CHAR(str) 将ASCII 码转换为字符
cast(16 as VARBINARY(50)) 将16转换为16进制
CONVERT(VARBINARY(50),16) 将16转换为16进制
master.dbo.fn_varbintohexstr(16) 将16转换为16进制
STR(n) 将数值型数据转为字符型数据

字符串操作函数

函数 释义
SUBSTRING (, length) 返回从字符串左边第starting_ position 个字符起length个字符的部分。
LEFT () 返回character_expression 左起 integer_expression 个字符。
RIGHT () 返回character_expression 右起 integer_expression 个字符
QUOTENAME (<’characterexpression’>[, quote character]) 返回被特定字符括起来的字符串。
REPLICATE (character_expression,integer_expression) 返回一个重复character_expression 指定次数的字符串。
REVERSE () 将指定的字符串的字符排列顺序颠倒
REPLACE () 用string_expression3 替换在string_expression1 中的子串string_expression2。
SPACE () 返回一个有指定长度的空白字符串。
STUFF () 用另一子串替换字符串指定位置、长度的子串。
LEFT () 返回character_expression 左起 integer_expression 个字符。
RIGHT () 返回character_expression 右起 integer_expression 个字符。
CHARINDEX (<’substring_expression’>, ) 返回字符串中某个指定的子串出现的开始位置
其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。
此函数不能用于TEXT 和IMAGE 数据类型。
PATINDEX (<’%substring expression%’>, <column name>) 其中子串表达式前后必须有百分号“%”否则返回值为0。
返回字符串中某个指定的子串出现的开始位置。
与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于CHAR、 VARCHAR 和TEXT 数据类型。
CONCAT 连接字符串函数,MSSQL 2012+ 支持

其他函数/语句

函数/语句 释义
IF…ELSE… 条件语句
case when exp then state1 ELSE state2 end 条件语句
WAITFOR DELAY ‘0:0:n’ 延迟n s
LEN(str) 计算字符串长度
LOWER(str) 将字符串的大写字母全部转成小写
UPPER(str) 将字符串的小写字母全部转成大写
LTRIM() 字符串头部的空格去掉
RTRIM() 把字符串尾部的空格去掉

常见SQL语句

获取数据库权限

  1. select is_srvrolemember('sysadmin')
  2. select is_srvrolemember('db_owner')
  3. select is_srvrolemember('public')

获取系统相关信息

  1. -- 获取版本
  2. select @@version;
  3. -- 获取用户名
  4. select user;
  5. -- 获取服务器主机名
  6. select @@servername;

获取数据库

  1. -- 当前数据库
  2. select db_name();
  3. -- 其他数据库,nnumber类型
  4. select db_name(n);
  5. -- 所有数据库
  6. select name from master..sysdatabases;

获取表

  1. select name from test..sysobjects where xtype = 'u'
  2. -- 或者
  3. -- 每个库都有information_schema,可以不用加test,也支持跨库查,需要注意这样查询出来使用视图的
  4. select table_name from test.information_schema.tables
  5. -- 从当前库获取表,去除视图
  6. select table_name from information_schema.tables where table_type not in ('view');

获取字段

  1. select name from test..syscolumns where id = (select id from test..sysobjects where name = 'users')
  2. -- 或者
  3. select column_name from test.information_schema.columns where table_name = 'users';
  4. --或者,以下不支持跨库查询
  5. select top 1 col_name(object_id('users'),1) from sysobjects;
  6. -- i 为第几个字段,int
  7. select top 1 col_name(object_id('users'),i) from sysobjects;

获取值

  1. select username, password from users;