1.模糊查询的概念
在KingbaseES数据库中,模糊查询是通过LIKE子句实现的,LIKE运算符是关系型数据库中最常用的运算符之一,主要针对字符型字段,在一个字符型字段列中检索包含对应字串。LIKE算作数据库中的谓词,在SQL结构化查询语言中,LIKE语句有着至关重要的作用,从某种意义上讲,LIKE可看作是一个精简的正则表达式功能。LIKE运算符将字符、字符串或CLOB值与模式进行比较,如果值与模式匹配,则返回TRUE,如果不匹配,则返回FALSE。该运算符可以轻松找到含有给定字符串的记录,这样就能更精确地检索数据,从而提高数据库查询的效率。
2.模糊查询的实现
LIKE关键字主要用于搜索匹配字段中的指定内容。其语法格式如下:
[NOT] LIKE ‘字符串’
其中:
- NOT:可选参数,字段中的内容与指定的字符串不匹配时满足条件。
- 字符串:指定用来匹配的字符串。“字符串”可以是一个很完整的字符串,也可以包含通配符。
- LIKE关键字支持百分号“%”和下划线“_”通配符。
3.模糊查询的实例
(1)带有“%”通配符的查询
“%”能代表任何长度的字符串,字符串长度可以为0,例如,a%b表示以字母a开头,以字母b结尾的任意长度的字符串。该字符串可以代表ab、acb、accdfgb等字符串。
例:在STU表中存储了学生姓名和年纪。
- test=# CREATE TABLE STU(ID int,NAME varchar(10),AGE int);
- CREATE TABLE
- test=# INSERT INTO STU values(1,'rose',18);
- INSERT 0 1
- test=# INSERT INTO STU values(2,'lili',19);
- INSERT 0 1
- test=# INSERT INTO STU values(3,'lucy',21);
- INSERT 0 1
- test=# INSERT INTO STU values(4,'norman',15);
- INSERT 0 1
- test=# INSERT INTO STU values(5,'zhhao',19);
- INSERT 0 1
- test=# INSERT INTO STU values(6,'zico',34);
- INSERT 0 1
- test=# INSERT INTO STU values(7,'zon',34);
- INSERT 0 1
- test=# INSERT INTO STU values(8,'jenny',21);
- INSERT 0 1
- test=# INSERT INTO STU values(9,'anna',17);
- INSERT 0 1
- test=# INSERT INTO STU values(10,'mimi',19);
- INSERT 0 1
- test=# SELECT * FROM STU;
- id | name | age
- ----+--------+-----
- 1 | rose | 18
- 2 | lili | 19
- 3 | lucy | 21
- 4 | norman | 15
- 5 | zhhao | 19
- 6 | zico | 34
- 7 | zon | 34
- 8 | jenny | 21
- 9 | anna | 17
- 10 | mimi | 19
- (10 rows)
在STU表中查询所有以字母“z”开头的学生姓名,SQL语句的运行结果如下:
- test=# SELECT * FROM STU WHERE NAME LIKE 'z%';
- id | name | age
- ----+-------+-----
- 5 | zhhao | 19
- 6 | zico | 34
- 7 | zon | 34
- (3 rows)
可以看到,查询结果中只返回了以字母“z”开头的学生姓名。
注意:匹配的字符串必须加单引号或双引号。
(2)NO LIKE表示字符串不匹配时满足条件
- test=# SELECT * FROM STU WHERE NAME NOT LIKE 'z%';
- id | name | age
- ----+--------+-----
- 1 | rose | 18
- 2 | lili | 19
- 3 | lucy | 21
- 4 | norman | 15
- 8 | jenny | 21
- 9 | anna | 17
- 10 | mimi | 19
- (7 rows)
可以看到,查询结果中返回了不以字母“z”开头的学生姓名。
(3)带有“_”通配符的查询
“_”只能代表单个字符,字符的长度不能为0.例如,a_b可以代表acb、aeb和ahb等字符串。
例如,在stu表中,查询所有以字母“z”开头,且z后只能有3个字母的学生姓名,SQL语句和运行结果如下:
- test=# SELECT * FROM STU WHERE NAME LIKE 'z__';
- id | name | age
- ----+------+-----
- 7 | zon | 34
- (1 row)
使用通配符的注意事项和技巧:
- 注意大小写:大小写是有意义的。
- 注意NULL:“%”通配符可以匹配到任意字符串,但是不能匹配NULL。
使用技巧:
- 不要过度使用通配符,如果其他操作符能达到的相同的目的,应该使用其他操作符。因为数据库中对通配符的处理一般会比其他操作符花费更长的时间。
- 在确定使用通配符后,尽量不要用在字符串的开始处。
- 仔细注意通配符的位置,如果放错地方,可能不会返回想要的数据。
4.总结
总之,LIKE运算符是一种非常灵活的查询方式,可以帮助我们更简单、高效地检索数据库中的数据。通过合理的运用,我们可以快速定位到需要的数据,从而提高数据库的查询效率。