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

SQL 中 INSTR 函数简介及 截取地址应用

一、基本语法与参数解析

​​语法​​:

INSTR(string1, string2 [, start_position [, nth_occurrence]])

  • ​​参数说明​​:
    a.​​string1​​:源字符串(必选)。
    b.​​string2​​:需查找的子字符串(必选)。
    c.​​start_position​​(可选):搜索起始位置,默认为1(从左到右);若为负数,则从右向左计算位置。
    d.​​nth_occurrence​​(可选):查找第几次出现,默认为1(首次出现),若为负数,如 -1,则表示从右向左查询。
  • 示例​​:
-- 查找子字符串首次出现的位置
SELECT INSTR('helloworld', 'l') FROM DUAL; -- 返回3 
-- 从第3位开始查找子字符串
SELECT INSTR('Oracle Database', 'a', 3) FROM DUAL; -- 返回5 
-- 查找第2次出现的子字符串
SELECT INSTR('hello world', 'o', 1, 2) FROM DUAL; -- 返回5 

二、核心应用场景

1.字符串分割​​

  • ​​提取分隔符间的内容​​:结合SUBSTR函数
    (1)截取居住地址到第四级(镇/乡/街道)
select NVL(CASEWHEN INSTR(t.address, '镇', -1) > 0 THENSUBSTR(t.address, 1, INSTR(t.address, '镇', -1))WHEN INSTR(t.address, '乡', -1) > 0 THENSUBSTR(t.address, 1, INSTR(t.address, '乡', -1))WHEN INSTR(t.address, '街道', -1) > 0 THENSUBSTR(t.address, 1, INSTR(t.address, '街道', -1)+1)ELSE t.addressEND,'未知') AS  "address"

备注:从右向左搜索​​:INSTR(residence_address, ‘镇’, -1) 从字符串末尾向前查找最后一个“镇”的位置。

  • 测试用例​​
输入示例输出结果
广东省深圳市宝安区福永街道广东省深圳市宝安区福永街道
湖南省长沙市长沙县黄花镇湖南省长沙市长沙县黄花镇
北京市海淀区中关村大街北京市海淀区中关村大街
上海市浦东新区张江镇科技园上海市浦东新区张江镇

2. 动态条件筛选​​

  • ​​模糊查询​​:替代LIKE实现动态条件。
SELECT * FROM employees 
WHERE INSTR(email, 'example.com') > 0;

相关文章:

  • 125.在 Vue3 中使用 OpenLayers 实现通过 WebGLVector 的方式添加海量点
  • Deepseek+Xmind:秒速生成思维导图与流程图
  • HTML、CSS 和 JavaScript 基础知识点
  • Tomcat和Nginx的主要区别
  • 5G如何让医疗更智能、更高效、更具未来感?
  • python共享内存实际案例,传输opencv frame
  • 中国古代史6
  • 【Nova UI】十六、打造组件库之滚动条组件(中):探秘滑块的计算逻辑
  • GNSS数据自动化下载系统的设计与实现
  • 互信息与KL散度:差异与应用全解析
  • Linux系统:文件系统前言,详解CHSLBA地址
  • 自适应稀疏核卷积网络:一种高效灵活的图像处理方案
  • iOS - 如何从appStore获取app版本信息
  • 电能质量扰动信号信号通过hilbert变换得到瞬时频率
  • 第五部分:第一节 - Node.js 简介与环境:让 JavaScript 走进厨房
  • 如何优化MCU中断响应时间
  • 【AI面试秘籍】| 第7期:多轮对话如何实现长期记忆?高频考点解析+代码实战
  • 使用腾讯会议远程控制电脑进行操作电脑
  • C语言中的assert
  • 一种基于光源评估并加权平均的自动白平衡方法(二)
  • 上海国际电影节纪录片单元,还世界真实色彩
  • 从《让·桑特伊》到《追忆》,假故事的胜利
  • 视频|王弘治:王太后,“先天宫斗圣体”?
  • 美凯龙:董事兼总经理车建兴被立案调查并留置
  • 沙县小吃中东首店在沙特首都利雅得开业,首天营业额超5万元
  • 旭辉控股集团主席林中:债务重组是活下来的前提,自营开发业务收缩至少数核心城市