您好!欢迎访问家园网-www.jy.wang!

家园网

or的作用

网络 作者:本站 点击:
SELECT BookName,Price,pDate 
FROM bookinfo 
WHERE BookName LIKE '%PHP%' OR BookName LIKE '%Oracle%' OR BookName LIKE '%Android%';


这段 SQL 语句的作用是:从 bookinfo 表中查询出书名包含 “PHP”、“Oracle” 或 “Android” 中任意一个关键词的所有图书,并返回书名、价格和出版日期。

下面拆解讲解每个部分:

1. SELECT BookName, Price, pDate

  • 表示查询结果只返回这 3 个字段

    • BookName:书名

    • Price:价格

    • pDate:出版日期(推测是 publish date

2. FROM bookinfo

  • 数据来源是 bookinfo 表(通常用于存储图书信息)

3. WHERE BookName LIKE '%PHP%' OR BookName LIKE '%Oracle%' OR BookName LIKE '%Android%'

  • LIKE:模糊匹配

  • %:通配符,代表 任意多个字符(包括0个)

    • '%PHP%' 表示:只要书名中某处包含 PHP 即可,比如 "PHP入门""深入PHP""PHP高级编程" 都能匹配。

  • OR:只要满足 其中任意一个 条件即可,不要求同时包含多个关键词。

实际查询效果举例

假设 bookinfo 表中有这些数据:

BookNamePricepDate
PHP从入门到放弃592023-01-01
Oracle性能优化892022-05-10
Android开发艺术探索792021-12-01
零基础学Python492024-03-01
深入PHP + Oracle992023-08-15

查询结果会返回:第1、2、3、5行(第4行没有关键词,不返回)

注意事项(常见问题)

  • 大小写敏感:取决于数据库的排序规则(collation)。
    MySQL 默认不区分大小写(LIKE '%php%' 也能匹配 PHP),SQL Server 或 Oracle 默认可能区分。

  • 性能问题LIKE '%keyword%' 以 % 开头 无法使用索引,数据量大时会全表扫描,速度较慢。

  • 多个关键词:目前是 OR 关系,如果希望书名同时包含 PHP 和 Oracle,应改为 AND

如果想更简洁(部分数据库支持)

某些数据库(如 PostgreSQL、MySQL 8+、SQL Server)可用正则表达式或 IN 不适用(IN 不支持 %),但可用 REGEXP

sql

SELECT BookName, Price, pDateFROM bookinfoWHERE BookName REGEXP 'PHP|Oracle|Android';

效果相同,更短。


标签: