人大金仓 金仓数据库KingbaseES中模糊查询

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表中存储了学生姓名和年纪。
  1. test=# CREATE TABLE STU(ID int,NAME varchar(10),AGE int);
  2. CREATE TABLE
  3. test=# INSERT INTO STU values(1,'rose',18);
  4. INSERT 0 1
  5. test=# INSERT INTO STU values(2,'lili',19);
  6. INSERT 0 1
  7. test=# INSERT INTO STU values(3,'lucy',21);
  8. INSERT 0 1
  9. test=# INSERT INTO STU values(4,'norman',15);
  10. INSERT 0 1
  11. test=# INSERT INTO STU values(5,'zhhao',19);
  12. INSERT 0 1
  13. test=# INSERT INTO STU values(6,'zico',34);
  14. INSERT 0 1
  15. test=# INSERT INTO STU values(7,'zon',34);
  16. INSERT 0 1
  17. test=# INSERT INTO STU values(8,'jenny',21);
  18. INSERT 0 1
  19. test=# INSERT INTO STU values(9,'anna',17);
  20. INSERT 0 1
  21. test=# INSERT INTO STU values(10,'mimi',19);
  22. INSERT 0 1
  23. test=# SELECT * FROM STU;
  24. id |  name  | age
  25. ----+--------+-----
  26.   1 | rose   |  18
  27.   2 | lili   |  19
  28.   3 | lucy   |  21
  29.   4 | norman |  15
  30.   5 | zhhao  |  19
  31.   6 | zico   |  34
  32.   7 | zon    |  34
  33.   8 | jenny  |  21
  34.   9 | anna   |  17
  35. 10 | mimi   |  19
  36. (10 rows)
复制代码



 

在STU表中查询所有以字母“z”开头的学生姓名,SQL语句的运行结果如下:
  1. test=# SELECT * FROM STU WHERE NAME LIKE 'z%';
  2. id | name  | age
  3. ----+-------+-----
  4.   5 | zhhao |  19
  5.   6 | zico  |  34
  6.   7 | zon   |  34
  7. (3 rows)
复制代码

可以看到,查询结果中只返回了以字母“z”开头的学生姓名。
注意:匹配的字符串必须加单引号或双引号。
(2)NO LIKE表示字符串不匹配时满足条件
  1. test=# SELECT * FROM STU WHERE NAME NOT LIKE 'z%';
  2. id |  name  | age
  3. ----+--------+-----
  4.   1 | rose   |  18
  5.   2 | lili   |  19
  6.   3 | lucy   |  21
  7.   4 | norman |  15
  8.   8 | jenny  |  21
  9.   9 | anna   |  17
  10. 10 | mimi   |  19
  11. (7 rows)
复制代码

可以看到,查询结果中返回了不以字母“z”开头的学生姓名。
(3)带有“_”通配符的查询
“_”只能代表单个字符,字符的长度不能为0.例如,a_b可以代表acb、aeb和ahb等字符串。
例如,在stu表中,查询所有以字母“z”开头,且z后只能有3个字母的学生姓名,SQL语句和运行结果如下:

  1. test=# SELECT * FROM STU WHERE NAME LIKE 'z__';
  2. id | name | age
  3. ----+------+-----
  4.   7 | zon  |  34
  5. (1 row)
复制代码

使用通配符的注意事项和技巧:
  • 注意大小写:大小写是有意义的。
  • 注意NULL:“%”通配符可以匹配到任意字符串,但是不能匹配NULL。
使用技巧:
  • 不要过度使用通配符,如果其他操作符能达到的相同的目的,应该使用其他操作符。因为数据库中对通配符的处理一般会比其他操作符花费更长的时间。
  • 在确定使用通配符后,尽量不要用在字符串的开始处。
  • 仔细注意通配符的位置,如果放错地方,可能不会返回想要的数据。



4.总结

总之,LIKE运算符是一种非常灵活的查询方式,可以帮助我们更简单、高效地检索数据库中的数据。通过合理的运用,我们可以快速定位到需要的数据,从而提高数据库的查询效率。
  • 19
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值