当前位置: 首页 > wzjs >正文

网站自己备案全国各地感染高峰进度

网站自己备案,全国各地感染高峰进度,网站开发要,老外做摄影网站花多少钱以下是 模糊查询 的深度技术解析,涵盖核心语法、通配符策略、性能优化及实战陷阱: 🔍 一、核心运算符:LIKE SELECT * FROM 表名 WHERE 列名 LIKE 模式字符串;🎯 二、通配符详解 通配符作用示例匹配案例%任意长度字符…

以下是 模糊查询 的深度技术解析,涵盖核心语法、通配符策略、性能优化及实战陷阱:


🔍 一、核心运算符:LIKE

SELECT * FROM 表名 
WHERE 列名 LIKE '模式字符串';

🎯 二、通配符详解

通配符作用示例匹配案例
%任意长度字符(含0字符)'张%'张三、张无忌、张
_单个字符'李_'李四、李雷(不匹配"李")
[ ]字符集合内单字符 (仅SQL Server)'[王李]%'王五、李四
[^ ]排除字符集合 (仅SQL Server)'[^0-9]%'中文、字母(排除数字开头)
📌 通用标准(MySQL/PgSQL/Oracle):
-- 匹配 "公司"结尾的字符串
WHERE company LIKE '%公司'  -- 匹配第二个字为"小"的姓名
WHERE name LIKE '_小%'     -- 匹配含下划线的文件名 (需转义)
WHERE file_name LIKE '%\_%' ESCAPE '\'  

⚠️ 三、关键注意事项

1. 大小写敏感性问题
数据库默认行为强制不敏感方案
MySQL取决于校对规则WHERE LOWER(name) LIKE '%abc%'
PostgreSQL区分大小写ILIKE 运算符
Oracle区分大小写WHERE UPPER(name) LIKE '%ABC%'
2. 通配符转义(通用方案)
-- 查找含 "20%" 的备注(如"折扣20%")
SELECT * FROM products 
WHERE notes LIKE '%20\%%' ESCAPE '\';  -- 定义'\'为转义符-- 查找含下划线的文件名
WHERE file_name LIKE '%\_%' ESCAPE '\';
3. NULL 值处理
-- 模糊查询不匹配 NULL 值!
SELECT * FROM users 
WHERE name LIKE '%张%';  -- 自动过滤 name IS NULL 的行

四、性能优化策略

1. 避免全模糊(%xxx%
-- ❌ 性能杀手(无法利用索引)
WHERE content LIKE '%数据库%'  -- ✅ 优化方案1:右模糊(可命中索引)
WHERE content LIKE '数据库%'  -- ✅ 优化方案2:全文索引(MySQL 5.6+)
ALTER TABLE articles ADD FULLTEXT INDEX (content);
SELECT * FROM articles 
WHERE MATCH(content) AGAINST('数据库' IN BOOLEAN MODE);
2. 慎用函数包裹列
-- ❌ 索引失效
WHERE LOWER(name) LIKE '%abc%'  -- ✅ 预处理数据
ALTER TABLE users ADD COLUMN name_lower VARCHAR(50);
UPDATE users SET name_lower = LOWER(name);  
CREATE INDEX idx_name_lower ON users(name_lower);
WHERE name_lower LIKE '%abc%';  -- 仍全扫,但比函数快
3. 使用覆盖索引
-- 只需返回 name 和 id
SELECT name, id FROM users 
WHERE name LIKE '张%';  -- 若索引含(name,id)则无需回表

🔧 五、进阶技巧

1. 正则表达式增强(REGEXP)
-- MySQL/PgSQL 支持
WHERE name REGEXP '^张[小大]'  -- 匹配"张小"或"张大"开头-- Oracle 用 REGEXP_LIKE
WHERE REGEXP_LIKE(name, '^张[小大]')
2. 通配符组合妙用
-- 匹配 130-139 开头的手机号
WHERE phone LIKE '13_%'        -- 简易版(可能包含无效号)
WHERE phone REGEXP '^13[0-9]{9}$'  -- 精确版(11位数字)-- 匹配邮箱格式
WHERE email LIKE '%@%.%'       -- 基础验证
3. 动态模式生成
-- 根据变量构造模式
SET @search_term = '数据';
SELECT * FROM books 
WHERE title LIKE CONCAT('%', @search_term, '%');

🧩 六、实战陷阱案例

陷阱1:中文字符截断错误
-- UTF-8 下 '李_' 可能匹配到 "李三"(3字节)或 "李𠮷"(4字节)
✅ 解决方案:使用 `CHAR_LENGTH()` 辅助
WHERE name LIKE '李_' AND CHAR_LENGTH(name) = 2
陷阱2:通配符冲突
-- 用户输入含 "%" 时(如搜索 "100%")
✅ 方案:预处理输入值
SET @input = REPLACE(@raw_input, '%', '\%');
WHERE content LIKE CONCAT('%', @input, '%') ESCAPE '\';
陷阱3:隐式空格问题
-- VARCHAR 存储时尾部空格参与匹配
CREATE TABLE test (col VARCHAR(10));
INSERT INTO test VALUES ('abc'), ('abc   ');SELECT * FROM test WHERE col LIKE 'abc';   -- 只匹配 'abc'
SELECT * FROM test WHERE col LIKE 'abc%';  -- 匹配两项

📊 七、模糊查询类型性能对比

查询类型示例索引利用适用场景
前缀匹配LIKE '张%'✅ 可利用B树索引快速人名/编号检索
后缀匹配LIKE '%公司'❌ 全表扫描低频分析
全模糊LIKE '%数据%'❌ 全表扫描小表或全文索引替代方案
固定位置LIKE '__小%'❌ 全表扫描严格格式数据(如身份证)

💡 终极建议

  1. 数据清洗:入库前规范化(统一大小写/去除特殊字符)
  2. 索引策略:对高频前缀查询列建索引
  3. 替代方案
    模糊查询
    数据量
    LIKE
    全文搜索引擎
    Elasticsearch
    PgSQL全文索引
  4. 安全防护:过滤用户输入的通配符(防止恶意超长%拖垮数据库)
http://www.dtcms.com/wzjs/603277.html

相关文章:

  • 上海哪家网站建得好做网站主流软件是php吗
  • 石家庄建站平台黑龙江建设网官
  • 南昌做网站哪家便宜保险网
  • php网站开发实服务网站开发
  • 天河建设网站多少钱wordpress 首页可变区域
  • 公司网站做论坛湖南人文科技学院录取查询
  • 南京做网站工作室wordpress问候插件
  • 网站源文件下载wordpress表单打印
  • 网站建设课程ppt模板一级消防工程师考试难不难
  • 网站繁简通新闻发布
  • 建设银行附近网站点支付网站怎么做的
  • 网站建设联系我们做网站专业的公司
  • 网站建设公制度自己做服务器和网站
  • 河北省建设执业资格注册中心网站网业公司
  • 网站百度seo关键词优化wordpress如何关闭评论
  • 西安微信网站建设公司网易企业邮箱邮件保存多久
  • 湘潭网络推广公司成都企业网站优化服务
  • 网站建设的核心是大连网站建设微信群
  • led设计网站建设免费手机网站模板
  • 沈阳网站的优化小企业如何优化网站建设
  • 成都搭建网站php能自己做网站吗
  • 怎么样才能让百度收录自己的网站文化网站源码
  • 阿里巴巴有几个网站是做外贸的wordpress畅言评论使用教程
  • 什么是网站易用性专业官方网站建设
  • 网站建设与开发考试上海网络维护哪个质量好
  • 网站建设资费住房和城乡建设部注册中心网站
  • 广州优化网站关键词建设银行官方网首页
  • 企业模板建站公司搜索引擎推广渠道
  • 温州网站设计制作课程高端网站设计费用
  • 网站换ip影响 百度邯郸商标vi设计策划公司