原文发布时间为:2010-10-28 —— 来源于本人的百度文章 [由搬家工具导入]

在SQL结构化查询语言中,LIKE语句有着至关重要的作用。
LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。
假设有一个数据库中有个表table1,在table1中有两个字段,分别是name和sex二者全是字符型数据。现在我们要在姓名字段中查询以“张”字开头的记录,语句如下:
select * from table1 where name like "张*"
如果要查询以“张”结尾的记录,则语句如下:
select * from table1 where name like "*张"
这里用到了通配符“*”,可以说,like语句是和通配符分不开的。下面我们就详细介绍一下通配符。

匹配类型  
模式
举例 及 代表值
说明

多个字符
*
c*c代表cc,cBc,cbc,cabdfec等
它同于DOS命令中的通配符,代表多个字符。

多个字符
%
%c%代表agdcagd等
这种方法在很多程序中要用到,主要是查询包含子串的。

特殊字符
[*]
a[*]a代表a*a
代替*

单字符
?
b?b代表brb,bFb等
同于DOS命令中的?通配符,代表单个字符

单数字
#
k#k代表k1k,k8k,k0k
大致同上,不同的是代只能代表单个数字。

字符范围
- [a-z]代表a到z的26个字母中任意一个 指定一个范围中任意一个
续上
排除 [!字符] [!a-z]代表9,0,%,*等 它只代表单个字符
数字排除 [!数字] [!0-9]代表A,b,C,d等 同上
组合类型 字符[范围类型]字符 cc[!a-d]#代表ccF#等 可以和其它几种方式组合使用
假设表table1中有以下记录:
name                          sex
张小明              男
李明天       男
李a天       女
王5五       男
王清五           男
下面我们来举例说明一下:
例1,查询name字段中包含有“明”字的。
select * from table1 where name like '%明%'
例2,查询name字段中以“李”字开头。
select * from table1 where name like '李*'
例3,查询name字段中含有数字的。
select * from table1 where name like '%[0-9]%'
例4,查询name字段中含有小写字母的。
select * from table1 where name like '%[a-z]%'
例5,查询name字段中不含有数字的。
select * from table1 where name like '%[!0-9]%'
以上例子能列出什么值来显而易见。但在这里,我们着重要说明的是通配符“*”与“%”的区别。
很多朋友会问,为什么我在以上查询时有个别的表示所有字符的时候用"%"而不用“*”?先看看下面的例子能分别出现什么结果:
select * from table1 where name like *明*
select * from table1 where name like %明%
大家会看到,前一条语句列出来的是所有的记录,而后一条记录列出来的是name字段中含有“明”的记录,
所以说,当我们作字符型字段包含一个子串的查询时最好采用“%”而不用“*”,用“*”的时候只在开头或者只在结尾时,而不能两端全由“*”代替任意字符的情况下。

========语法==========
LIKE   

确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。然而,可使用字符串的任意片段匹配通配符。与使用   =   和   !=   字符串比较运算符相比,使用通配符可使   LIKE   运算符更加灵活。如果任何参数都不属于字符串数据类型,Microsoft®   SQL   Server™   会将其转换成字符串数据类型(如果可能)。

语法
match_expression   [   NOT   ]   LIKE   pattern   [   ESCAPE   escape_character   ]

参数
match_expression   任何字符串数据类型的有效   SQL   Server   表达式。
patternmatch_expression   中的搜索模式,可以包含下列有效   SQL   Server   通配符

1       %     包含零个或更多字符的任意字符串
示例:WHERE   title   LIKE   '%computer% '     将查找处于书名任意位置的包含单词   computer   的所有书名。

2     _(下划线)   任何单个字符
示例:WHERE   au_fname   LIKE   '_ean '   将查找以   ean   结尾的所有   4   个字母的名字(Dean、Sean   等)。

3       []   指定范围中的任何单个字符
示例:WHERE   au_lname   LIKE   '[C-P]arsen '   将查找以arsen   结尾且以介于   C   与   P   之间的任何单个字符开始的   作者姓氏,例如,Carsen、Larsen、Karsen   等

4   [^]     不属于指定范围中的任何单个字符,与   []   相反
示例:WHERE   au_lname   LIKE   'de[^l]% '   将查找以   de   开始且其后的字母不为   l   的所有作者的姓氏。

一   使用   like   的模式匹配:
在搜索Datetime类型时,建议使用like   .
LIKE   支持   ASCII   模式匹配和   Unicode   模式匹配。当所有参数,包括   match_expression、pattern   和   escape_character(如果有)都是   ASCII   字符数据类型时,将执行   ASCII   模式匹配。如果其中任何参数属于   Unicode   数据类型,则所有参数将被转换为   Unicode   并执行   Unicode   模式匹配。当对   Unicode   数据(nchar   或   nvarchar   数据类型)使用   LIKE   时,尾随空格是有意义的。但是对于非   Unicode   数据,尾随空格没有意义。Unicode   LIKE   与   SQL-92   标准兼容。ASCII   LIKE   与   SQL   Server   的早期版本兼容

二   使用   %   通配符

例如,此查询将显示数据库中所有的系统表,因为它们都以字母   sys   开始:
SELECT   TABLE_NAME
FROM   INFORMATION_SCHEMA.TABLES
WHERE   TABLE_NAME   LIKE   'sys% '
若要查阅非系统表的所有对象,请使用   NOT   LIKE   'sys% '。如果共有   32   个对象且   LIKE   找到   13   个与模式匹配的名称,则   NOT   LIKE   将找到   19   个与   LIKE   模式不匹配的对象

三   使用escape字句的模式匹配

可搜索包含一个或多个特殊通配符的字符串。例如,customers   数据库中的   discounts   表可能存储含百分号   (%)   的折扣值。若要搜索作为字符而不是通配符的百分号,必须提供   ESCAPE   关键字和转义符。例如,一个样本数据库包含名为   comment   的列,该列含文本   30%。若要搜索在   comment   列中的任何位置包含字符串   30%   的任何行,请指定由   WHERE   comment   LIKE   '%30!%% '   ESCAPE   '! '   组成的   WHERE   子句。如果不指定   ESCAPE   和转义符,SQL   Server   将返回所有含字符串   30   的行。

下例使用   ESCAPE   子句和转义符查找   mytbl2   表的   c1   列中的精确字符串   10-15%

USE   pubs
GO
IF   EXISTS(SELECT   TABLE_NAME   FROM   INFORMATION_SCHEMA.TABLES
WHERE   TABLE_NAME   =   'mytbl2 ')
DROP   TABLE   mytbl2
GO
USE   pubs
GO
CREATE   TABLE   mytbl2
(
c1   sysname
)
GO
INSERT   mytbl2   VALUES   ( 'Discount   is   10-15%   off ')
INSERT   mytbl2   VALUES   ( 'Discount   is   .10-.15   off ')
GO
SELECT   c1 
FROM   mytbl2
WHERE   c1   LIKE   '%10-15!%   off% '   ESCAPE   '! '
GO

四   使用   []   通配符

下例查找姓为   Carson、Carsen、Karson   或   Karsen   的作者所在的行。
USE   pubs
SELECT   au_lname,   au_fname,   phone
FROM   authors
WHERE   au_lname   LIKE   '[CK]ars[eo]n '
ORDER   BY   au_lname   ASC,   au_fname   ASC

sql语句like的用法 有些正则表达式可以通过like实现的更多相关文章

  1. sql语句Group By用法-转载

    sql语句Group By用法一则 2007-10-25 12:00 sql语句Group By用法一则 如果我们的需求变成是要算出每一间店 (store_name) 的营业额 (sales),那怎么 ...

  2. (转载)总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法 总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中 ...

  3. 总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法 日期:2005年6月1日 作者:seasky212 总结一下SQL语句中引号(').quoted ...

  4. (转载)总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法以及SQL语句中日期格式的表示(#).('')在Delphi中进行字符变量连接相加时单引号用('' ...

  5. Mysql常用sql语句(21)- regexp 正则表达式查询

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 正则的强大不言而喻,Mysql中也提供了 reg ...

  6. sql语句的基本用法总结

    一.sql语法 select */列名1,列名2... from 表名[连接查询 内连接/左连接 on条件] 必选的 where 条件 子查询/in/exists/between ... and .. ...

  7. sql语句-CASE WHEN用法详解

    当我们需要从数据源上 直接判断数据显示代表的含义的时候 ,就可以在SQL语句中使用 Case When这个函数了. Case具有两种格式.简单Case函数和Case搜索函数. 第一种 格式 : 简单C ...

  8. sql语句的join用法

    sql的join分为三种,内连接.外连接.交叉连接. 以下先建2张表,插入一些数据,后续理解起来更方便一些. create table emp(empno int, name char(20),dep ...

  9. sql语句having子句用法,很多时候你曾忘掉

    显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区. SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY reg ...

随机推荐

  1. linux配置邮箱服务

    配置邮箱服务Linux常见的邮箱客户端是mail或mutt:服务端有sendmail服务(centos 5).postfix服务(centos 6).这里我们不使用本地的邮件服务,而是使用本地的邮件客 ...

  2. linux 命令学习(持续完善中...)

    linux 命令学习(持续完善中...) 主要是记录一些开发过程中用到的linux命令,慢慢补充 一.用户 1.添加用户: useradd 用户名 2.设置密码:passwd 用户名 ,然后按照提示输 ...

  3. 学习python第四天 列表

    模块的导入是使用 import sys#导入模块sysprint(sys.path)#打印环境变量,可能存在的目录print(sys.argv)#打印脚本的名字,相对路径 import os os.s ...

  4. Python学习笔记(六)测试开发之接口开发

    Python的接口开发要使用到flask.Flask(__name__) 下面是一个简单的接口实例程序及访问效果: import flaskserver = flask.Flask(__name__) ...

  5. Python3中的列表用法,看这一篇就够了

    类似C语言中的列表用法 ---------------------------------------------------------------------------------------- ...

  6. day13内置函数

    内置函数 一.三元表达式 def max2(x,y): if x>y: return x else: return y res=max2(10,11) print(res) 三元表达式仅应用于: ...

  7. Java文件 ---文件相关操作

    创建文件 file.createNewFile() 注:若该文件对象未指定文件路径,则文件创建于相对路径中,即工程目录下.(“../”表示上级文件目录,相对路径前面不加“/”,eg:bin/text. ...

  8. HDU 2177 取(2堆)石子游戏

    取(2堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  9. 【Sudoku Solver】cpp

    题目: Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated b ...

  10. Mac OS 添加 MySQL 环境变量

    1.打开终端,输入: cd ~ 会进入~文件夹 2.如果 ~ 文件夹中已经存在 .bash_profile 文件,则在 : 后面追加你想要添加的路径, 3. 否则输入:touch .bash_prof ...