外地客户如不方便将要进行数据恢复的储存设备(如硬盘,U盘等)送到我们数据恢复中心,可以通过快递至我数据恢复中心。

SQL Server如何使用正则表达式基本字符匹配

我们从一个非常简单的例子开始。下面的语句检索列prod_name包含文本1000的所有行:

SELECT prod_name
FROM products
WHERE prod_name REGEXP'1000'
ORDER BY prod_name;

输出

prod_name
JetPack 1000

除关键字LIKE被REGEXP替代外,这条语句看上去非常像使用LIKE的语句(第8章) 。它告诉MySQL:REGEXP后所跟的东西作为正则表达式(与文字正文1000匹配的一个正则表达式)处理。

为什么要费力地使用正则表达式?在刚才的例子中,正则表达式确实没有带来太多好处(可能还会降低性能),不过,请考虑下面的例子:

SELECT prod_name
FROM products
WHERE prod_name REGEXP '.000'
ORDER BY prod_name;

输出

prod_name
JetPack 1000
JetPack 2000

这里使用了正则表达式.000。.是正则表达式语言中一个特殊的字符。它表示匹配任意一个字符,因此,1000和2000都匹配且返回。

当然,这个特殊的例子也可以用LIKE和通配符来完成。

LIKE与REGEXP 在LIKE和REGEXP之间有一个重要的差别。请看以下两条语句:

SELECT prod_name
FROM products
WHERE prod_name LIKE '1000'
ORDER BY prod_name;
SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000'
ORDER BY prod_name;

如果执行上述两条语句,会发现第一条语句不返回数据,而第二条语句返回一行。为什么?

LIKE匹配整个列。如果被匹配的文本在列值中出现,LIKE将不会找到它,相应的行也不被返回(除非使用通配符)。而REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回。这是一个非常重要的差别。

那么,REGEXP能不能用来匹配整个列值(从而起与LIKE相同的作用)?答案是肯定的,使用^和$定位符(anchor)即可。

匹配不区分大小写 MySQL中的正则表达式匹配(自版本3.23.4后)不区分大小写(即,大写和小写都匹配)。为区分大小写,可使用BINARY关键字,如WHERE prod_name REGEXP BINARY ‘JetPack .000’。

转载请注明:成都千喜数据恢复中心 » SQL Server如何使用正则表达式基本字符匹配

喜欢 (13)or分享 (0)

您必须 登录 才能发表评论!