SQL 通配符(转)
_ 与任意单字符匹配
% 与包含一个或多个字符的字符串匹配
[ ] 与特定范围(例如,[a-f])或特定集(例如,[abcdef])中的任意单字符匹配。
[^] 与特定范围(例如,[^a-f])或特定集(例如,[^abcdef])之外的任意单字符匹配。
例子:
• WHERE FirstName LIKE '_im' 可以找到所有三个字母的、以 im 结尾的名字(例如,Jim、Tim)。
• WHERE LastName LIKE '%stein' 可以找到姓以 stein 结尾的所有员工。
• WHERE LastName LIKE '%stein%' 可以找到姓中任意位置包括 stein 的所有员工。
• WHERE FirstName LIKE '[JT]im' 可以找到三个字母的、以 im 结尾并以 J 或 T 开始的名字(即仅有 Jim 和 Tim)
• WHERE LastName LIKE 'm[^c]%' 可以找到以 m 开始的、后面的(第二个)字母不为 c 的所有姓。
附:如果你想要查找包括 % 这个字符的字符串,你需要对%字符进行转义使oracle不再把它当作一个通配符来处理。想要达到这样的效果,你需要使用ESCAPE子句来使oracle明白你选择哪个字符作为转义字符,如下所示:
SELECT instructions
FROM cust_order
WHERE instructions LIKE '%\%%' ESCAPE '\';
使用\作为转义字符,返回instructions列的值中包含%字符的所有行。
SQL 注释符、运算符与通配符
4.5.1注释符(Annotation)
在Transact-SQL 中可使用两类注释符。
ANSI 标准的注释符“--” 用于单行注释;
与C语言相同的程序注释符号,即“/**/”。“/*”用于注释文字的开头,“*/”用于注释文字的结尾,可在程序中标识多行文字为注释。
4.5.2 运算符(Operator)
1 算术运算符
包括:+(加)、―(减)、(乘)、(除)、%(取余)
2 比较运算符
包括:>(大于)<(小于)、= (等于)、>=(大于等于)、<=(小于等于)、<>
(不等于)、!=(不等于)、!>(不大于)!<( 不小于)
其中!=、!>、!<不是ANSI标准的运算符。
3 逻辑运算符
包括:AND(与)、OR(或)、NOT(非)
4 位运算符
包括:按位与、|(按位或)、~(按位非)^(按位异或)
5 连接运算符
连接运算符“+”用于连接两个或两个以上的字符或二进制串、列名或者串和列的混合体,将一个串加入到另一个串的末尾。其语法如下:
+
例4-7
use pangu
declare@startdate datetime
set@startdate=‘1/1/2000’
select‘Start Date:’+convert(varchar(12)@startdate)
--convert()函数用于转换数据类型,见4.8.4
运行结果如下:
Start Date:Jan 1 2000
例4-8:
use pangu
select‘月薪最高的员工是:‘+ e_name+’月薪为:‘+convert(varchar(10)e_wage
from employee
where e_wage=
(select max (e_wage)
from employee)
运行结果如下:
月薪最高的员工是:张三月薪为8000.00
(1 row (s) affected)
在Transact-SQL中运算符的处理顺序如下所示,如果相同层次的运算出现在一起时则处理顺序位从左到右。
括号 ()
位运算符 ~
算术运算符 *、/、%
算术运算符 +、-
位运算符 ^
位运算符 &
位运算符 |
逻辑运算符 NOT\
逻辑运算符 AND
逻辑运算符 OR
4.5.3 通配符Wildcard
在SQL Server中可以使用如表4-4所示的通配符。
表4-4 Transact-SQL的通配符
% 代表0个或多个字符
_(下划线) 代表一个字符
[] 表示在某一范围内的字符
[^] 表示不在某一范围内的字符