Chinaunix首页 | 论坛 | 博客
  • 博客访问: 887693
  • 博文数量: 179
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1546
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-27 11:05
个人简介

MySQL工程师 QQ:1815357042

文章分类

全部博文(179)

文章存档

2015年(179)

分类: LINUX

2015-02-11 23:05:54

1、正则表达式是用来匹配字符串的,这个就不解释了
2、通配符是用来通配的,也就是shell在做Pattern Expansion时用到的

个人理解是:正则表达式包含 1、通配符和2、模式规则


Linux shell
最常见通配符(wildcard 万能牌)
数字 [0-9]
字母 [a-z]
非字母[^a-z]
非数字[^0-9]
任意符号 *
转义符号 \

模式规则
大写 [[:upper:]] 
小写 [[:lower:]]
数字 [[:digit:]]
字母 [[:alpha:]]
数字+字母[[:alnum:]]
空格 [[:blank:]]

SQL只能用通配符,而不能用模式规则


平时,我们会用like 来匹配数据,而SQL可以用的通配符如下



实验数据库:SQL Server2012


例子
1、我们希望从上面的 "Persons" 表中选取居住在以 "Ne" 开始的城市里的人
  1. SELECT * FROM Persons
  2. WHERE City LIKE 'Ne%'

2、我们希望从 "Persons" 表中选取居住在包含 "lond" 的城市里的人:
  1. SELECT * FROM Persons
  2. WHERE City LIKE '%lond%'
3、我们希望从上面的 "Persons" 表中选取名字的第一个字符之后是 "eorge" 的人
  1. SELECT * FROM Persons
  2. WHERE FirstName LIKE '_eorge'

4、我们希望从 "Persons" 表中选取的这条记录的姓氏以 "C" 开头,然后是一个任意字符,然后是 "r",然后是任意字符,然后是 "er":
  1. SELECT * FROM Persons
  2. WHERE LastName LIKE 'C_r_er'


5、我们希望从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人
  1. SELECT * FROM Persons
  2. WHERE City LIKE '[ALN]%'

6、我们希望从上面的 "Persons" 表中选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人:
  1. SELECT * FROM Persons
  2. WHERE City LIKE '[!ALN]%'

7、转义 使用ESCAPE关键字
不适合使用[charlist]来排除:WHERE [name] LIKE 'DBBackup!_[^Opinion]%' ESCAPE '!'  
  1. SELECT * FROM [dbo].[aaa] WHERE [name] LIKE 'DBBackup!_%' ESCAPE '!' AND [name] NOT LIKE '%Opinion%'



8、误区 我们用得最多就是匹配字符串,其实也可以匹配其他数据类型,只不过不能用通配符已而
不用通配符,那么like就失去威力了
表结构
  1. CREATE TABLE testwildcard(id INT,timel DATETIME,name NVARCHAR(100))
匹配int类型
  1. SELECT * FROM [dbo].[testwildcard] WHERE [id] LIKE 1



匹配datetime类型
  1. SELECT * FROM [dbo].[testwildcard] WHERE [timel] LIKE CAST('2015-02-12 00:28:58' AS DATETIME)




阅读(3468) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~