下面是对sql语句中like用法的详细分析和介绍。有需要的朋友可以过来参考一下。
在SQL结构化查询语言中,LIKE语句起着至关重要的作用。like语句的语法格式是:select * from表名where字段名LIKE对应值(子串),主要针对字符型字段。它的功能是在字符字段列中检索相应的子字符串。
假设数据库中有一个表table1,table1中有两个字段,姓名和性别,都是字符型数据。现在,我们要查询名称字段中以单词“Zhang”开头的记录,语句如下:select * from table 1 where name like Zhang * 。如果我们要查询以“Zhang”结尾的记录,语句如下:select * from table 1 where name like * Zhang 。这里使用了通配符“*”。可以说like语句离不开通配符。下面详细介绍一下通配符。
匹配类型
型号示例和代表值描述多个字符
*c*c * c代表cc、cbc、cBc、cabdfec等。它与DOS命令中的通配符相同,代表多个字符。多个字符
%%c% c%代表agdcagd等。这个方法在很多程序中使用,主要是查询那些包含子字符串的程序。特殊字符
[*] A [*] A代表a*a而不是*单字符
?b?b代表brb,bFb相当于DOS命令?通配符,代表单个字符单数字
#k#k # k代表K1K,K8K,K0K大致和上面一样,只是代只能代表一个数。字符范围
-[A-Z]代表A到Z的26个字母中的任意一个指定一个范围内的任意一个继续排除[!人物] [!A-z]代表9、0、%、*等。它只代表单个字符数,不包括[!数字] [!0-9]表示与A、b、C、d等相同的组合类型字符。[范围类型]字符cc[!A-d]#代表ccF#等。它可以与其他几种方法结合使用。假设在表1中有以下记录:姓名性别张晓明男李男田皇后5五男王男
我们举个例子:例1,查询包含“明”字的姓名字段。select * from table 1 where name like % Ming % Example 2,查询名称字段以单词“Li”开头。select * from table 1 where name like Li * Example 3,查询包含数字的名称字段。select * from table 1 where name like“%[0-9]%”示例4,用小写字母查询name字段。select * from table 1 where name like“%[a-z]%”示例5,查询不包含数字的名称字段。select * from table1,其中name like“%[!0-9]%
上面的例子可以列出哪些值是显而易见的。但是在这里,需要注意通配符“*”和“%”的区别。很多朋友会问,为什么我在上面的查询中单独表示所有字符的时候用 % 而不是 * ?让我们来看看以下示例的结果:select * from table 1 where name like * bright
正如您将看到的,前面的语句列出了所有记录,而最后一个语句列出了name字段中带有“Ming”的记录。所以当我们做一个查询,其中的字符字段包含一个子串时,最好用“%”而不是“*”,当使用“*”时,只在开头或者只在结尾,而不是两端的“*”全部替换任何字符时。