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

【oracle】正则表达式

文章目录

      • 1.介绍
        • 1.1 什么是正则表达式
        • 1.2 什么是Oracle正则表达式
      • 2. Oracle正则表达式的基础知识
        • 2.1 常用的元字符
        • 2.2 常用的转义序列
        • 2.3 常用的量词
      • 3. Oracle正则表达式的函数
        • 3.1 REGEXP_LIKE
        • 3.2 REGEXP_SUBSTR
        • 3.3 REGEXP_REPLACE
        • 3.4 REGEXP_INSTR
        • 3.5 REGEXP_COUNT
      • 4. Oracle正则表达式的应用实例
        • 4.1 使用REGEXP_LIKE进行模式匹配
        • 4.2 使用REGEXP_SUBSTR提取匹配的子串
        • 4.3 使用REGEXP_REPLACE替换匹配的子串
        • 4.4 使用REGEXP_INSTR找到匹配的位置
        • 4.5 使用REGEXP_COUNT计算匹配的次数
      • 5. Oracle正则表达式的性能优化
        • 5.1 正确使用元字符和量词
        • 5.2 使用预编译的正则表达式
        • 5.3 选择合适的正则表达式函数
      • 6. Oracle正则表达式的注意事项
        • 6.1 正则表达式的特殊字符处理
        • 6.2 正则表达式的贪婪匹配和懒惰匹配
      • 7. 实战案例
        • 提取字符串中的年份
        • 验证密码复杂性
        • 提取URL的协议、主机和路径
        • 验证IP地址
        • 提取字符串中的邮件地址
        • 替换HTML标签
        • 提取字符串中的电话号码
        • 匹配信用卡号
        • 提取字符串中的URL
        • 匹配社会安全号码

1.介绍

1.1 什么是正则表达式

正则表达式(Regular Expression),是一种用于处理字符串的强大工具。它主要用于两个方面:

  • 模式匹配:检查一个字符串是否包含某种特定的模式。例如,我们可以使用正则表达式来检查一个字符串是否包含特定的单词或者是否符合特定的格式(如邮件地址、电话号码等)。

  • 字符串操作:基于特定的模式来分割、替换或者提取字符串。例如,我们可以使用正则表达式来替换字符串中的某个单词,或者提取出字符串中符合特定格式的部分。

正则表达式的核心是一套定义模式的语法规则,通过这套规则,我们可以构造出各种复杂的模式。这套语法规则包括了一些特殊的元字符(如.*+等)、转义序列(如\d\w等)和量词(如*+?等)。

1.2 什么是Oracle正则表达式

Oracle正则表达式是Oracle数据库对正则表达式功能的实现。Oracle数据库提供了一组正则表达式函数,这些函数可以在SQL语句中使用,以便在处理字符串数据时使用正则表达式。

这些函数包括:

  • REGEXP_LIKE:检查一个字符串是否匹配一个正则表达式模式。
  • REGEXP_SUBSTR:从一个字符串中提取匹配一个正则表达式模式的子串。
  • REGEXP_REPLACE:替换一个字符串中匹配一个正则表达式模式的部分。
  • REGEXP_INSTR:返回一个字符串中匹配一个正则表达式模式的部分的位置。
  • REGEXP_COUNT:计算一个字符串中匹配一个正则表达式模式的部分的数量。

Oracle正则表达式的语法规则和通用的正则表达式大致相同,但也有一些Oracle特有的规则和特性。

2. Oracle正则表达式的基础知识

2.1 常用的元字符

元字符是正则表达式中具有特殊含义的字符。以下是一些常用的元字符:

  • .:匹配任何单个字符(除了换行符)。
  • ^:匹配输入字符串的开始位置。
  • $:匹配输入字符串的结束位置。
  • *:匹配前面的子表达式零次或多次。
  • +:匹配前面的子表达式一次或多次。
  • ?:匹配前面的子表达式零次或一次。
  • [...]:定义一个字符集,匹配其中任何一个字符。
  • [^...]:定义一个反向字符集,匹配不在其中的任何一个字符。
  • {n}:精确匹配n次。
  • {n,}:匹配n次或更多次。
  • {n,m}:匹配至少n次,但不超过m次。
2.2 常用的转义序列

转义序列是一种特殊的字符序列,用于匹配一类特定的字符。以下是一些常用的转义序列:

  • \d:匹配一个数字字符。等价于[0-9]
  • \D:匹配一个非数字字符。等价于[^0-9]
  • \w:匹配一个单词字符(字母、数字或下划线)。等价于[A-Za-z0-9_]
  • \W:匹配一个非单词字符。等价于[^A-Za-z0-9_]
  • \s:匹配一个空白字符(包括空格、制表符、换页符、换行符等)。
  • \S:匹配一个非空白字符。
2.3 常用的量词

量词用于指定一个字符或一组字符可以出现的次数。以下是一些常用的量词:

  • *:匹配前面的字符或组零次或多次。
  • +:匹配前面的字符或组一次或多次。
  • ?:匹配前面的字符或组零次或一次。
  • {n}:匹配前面的字符或组n次。
  • {n,}:匹配前面的字符或组n次或更多次。
  • {n,m}:匹配前面的字符或组至少n次,但不超过m次。

注意,Oracle正则表达式默认是贪婪匹配,也就是说,会尽可能多地匹配字符。如果要进行最小匹配(也称为懒惰匹配或非贪婪匹配),可以在量词后面添加?,如*?+???{n,m}?等。

3. Oracle正则表达式的函数

Oracle提供了一系列的正则表达式函数,这些函数可以用于在SQL语句中进行复杂的字符串处理。以下是这些函数的详细介绍:

3.1 REGEXP_LIKE

REGEXP_LIKE函数用于检查一个字符串是否匹配一个正则表达式模式。如果匹配,函数返回TRUE,否则返回FALSE

语法:

REGEXP_LIKE(source_string, pattern [, match_parameter])
  • source_string:源字符串,即需要进行匹配的字符串。
  • pattern:正则表达式模式。
  • match_parameter:匹配参数,用于指定匹配的模式。例如,'i'表示忽略大小写,'c'表示区分大小写,'n'表示允许使用.匹配换行符,'m'表示多行模式,'x'表示忽略空白字符和#之后的字符。
3.2 REGEXP_SUBSTR

REGEXP_SUBSTR函数用于从一个字符串中提取匹配一个正则表达式模式的子串。

语法:

REGEXP_SUBSTR(source_string, pattern [, position [, occurrence [, match_parameter [, sub_expression]]]])
  • source_string:源字符串。
  • pattern:正则表达式模式。
  • position:开始搜索的位置,如果省略,默认为1。
  • occurrence:匹配的次数,如果省略,默认为1。
  • match_parameter:匹配参数,同REGEXP_LIKE
  • sub_expression:子表达式的位置,用于提取括号中的子表达式。
3.3 REGEXP_REPLACE

REGEXP_REPLACE函数用于替换一个字符串中匹配一个正则表达式模式的部分。

语法:

REGEXP_REPLACE(source_string, pattern, replace_string [, position [, occurrence [, match_parameter]]])
  • source_string:源字符串。
  • pattern:正则表达式模式。
  • replace_string:替换字符串。
  • position:开始搜索的位置,如果省略,默认为1。
  • occurrence:匹配的次数,如果省略,默认为所有匹配的部分。
  • match_parameter:匹配参数,同REGEXP_LIKE
3.4 REGEXP_INSTR

REGEXP_INSTR函数返回一个字符串中匹配一个正则表达式模式的部分的位置。

语法:

REGEXP_INSTR(source_string, pattern [, position [, occurrence [, return_option [, match_parameter [, sub_expression]]]]])
  • source_string:源字符串。
  • pattern:正则表达式模式。
  • position:开始搜索的位置,如果省略,默认为1。
  • occurrence:匹配的次数,如果省略,默认为1。
  • return_option:返回选项,如果为0,返回匹配的开始位置,如果为1,返回匹配的结束位置,如果省略,默认为0。
  • match_parameter:匹配参数,同REGEXP_LIKE
  • sub_expression:子表达式的位置,用于提取括号中的子表达式。
3.5 REGEXP_COUNT

REGEXP_COUNT函数计算一个字符串中匹配一个正则表达式模式的部分的数量。

语法:

REGEXP_COUNT(source_string, pattern [, position [, match_parameter]])
  • source_string:源字符串。
  • pattern:正则表达式模式。
  • position:开始搜索的位置,如果省略,默认为1。
  • match_parameter:匹配参数,同REGEXP_LIKE

4. Oracle正则表达式的应用实例

以下是一些使用Oracle正则表达式函数的应用实例:

4.1 使用REGEXP_LIKE进行模式匹配

假设我们有一个员工表EMPLOYEES,我们想找出所有名字以字母"A"开头的员工:

SELECT first_name
FROM employees
WHERE REGEXP_LIKE(first_name, '^A');
4.2 使用REGEXP_SUBSTR提取匹配的子串

假设我们有一个字符串,我们想提取其中的数字:

SELECT REGEXP_SUBSTR('123 Main Street', '\d+') AS extracted_number
FROM dual;

这将返回’123’,这是字符串中的第一个数字序列。

4.3 使用REGEXP_REPLACE替换匹配的子串

假设我们有一个字符串,我们想将其中的所有数字替换为’X’:

SELECT REGEXP_REPLACE('123 Main Street', '\d', 'X') AS replaced_string
FROM dual;

这将返回’XXX Main Street’。

4.4 使用REGEXP_INSTR找到匹配的位置

假设我们有一个字符串,我们想找到第一个数字的位置:

SELECT REGEXP_INSTR('123 Main Street', '\d') AS position
FROM dual;

这将返回1,因为第一个数字在字符串的第一个位置。

4.5 使用REGEXP_COUNT计算匹配的次数

假设我们有一个字符串,我们想计算其中的数字的数量:

SELECT REGEXP_COUNT('123 Main Street', '\d') AS count
FROM dual;

这将返回3,因为字符串中有3个数字。

5. Oracle正则表达式的性能优化

使用正则表达式时,性能是一个重要的考虑因素。以下是一些优化Oracle正则表达式性能的建议:

5.1 正确使用元字符和量词

元字符和量词的使用可以大大影响正则表达式的性能。例如,贪婪量词(如*+)可能会导致大量的回溯,从而降低性能。如果可能,使用非贪婪量词(如*?+?),或者使用更具体的模式来减少匹配的可能性。

5.2 使用预编译的正则表达式

预编译的正则表达式可以提高性能,因为它们只需要编译一次,然后可以被多次使用。在Oracle中,可以使用DBMS_SQL包中的REGEXP_LIKE函数来预编译正则表达式。

5.3 选择合适的正则表达式函数

Oracle提供了多种正则表达式函数,每种函数都有其特定的用途。选择最适合你需要的函数可以提高性能。例如,如果你只需要检查一个字符串是否匹配一个模式,而不需要提取或替换匹配的部分,那么REGEXP_LIKE可能是最好的选择。如果你需要提取匹配的部分,那么REGEXP_SUBSTR可能是最好的选择。如果你需要替换匹配的部分,那么REGEXP_REPLACE可能是最好的选择。

此外,如果你的查询涉及到大量的数据,考虑在可能的情况下,使用正则表达式的索引,这可以大大提高查询性能。

6. Oracle正则表达式的注意事项

在使用Oracle正则表达式时,有一些重要的注意事项需要考虑:

6.1 正则表达式的特殊字符处理

正则表达式中的一些字符具有特殊的含义,例如*, +, ?, ., ^, $, |, (), [], {}, \等。如果你想在正则表达式中使用这些字符的字面值,你需要使用\进行转义。例如,如果你想匹配字符串10.00,你需要写成10\.00,否则.将匹配任何字符。

6.2 正则表达式的贪婪匹配和懒惰匹配

正则表达式中的量词默认是贪婪的,这意味着它们会尽可能多地匹配字符。例如,正则表达式a.*b将匹配从第一个a到最后一个b之间的所有字符。

如果你想进行懒惰匹配(即尽可能少地匹配字符),你可以使用?来修改量词。例如,正则表达式a.*?b将匹配从第一个a到第一个b之间的所有字符。

在使用贪婪匹配和懒惰匹配时,需要注意可能的性能影响。贪婪匹配可能会导致大量的回溯,从而降低性能。如果可能,尽量使用更具体的模式来减少匹配的可能性。

7. 实战案例

提取字符串中的年份
  • 如果你想从一个包含日期的字符串中提取年份,你可以使用REGEXP_SUBSTR函数。例如:

    SELECT REGEXP_SUBSTR('The event will happen on 2024-10-29.', '(\d{4})') AS year FROM dual;
    

    这将返回2024

验证密码复杂性
  • 可以使用REGEXP_LIKE函数来验证密码是否包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符。例如:

    SELECT password FROM users WHERE REGEXP_LIKE(password, '(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_])');
    
提取URL的协议、主机和路径
  • 可以使用REGEXP_SUBSTR函数来提取URL的协议、主机和路径。例如:

    SELECT REGEXP_SUBSTR('https://www.example.com/page', '(https?|ftp)://') AS protocol,REGEXP_SUBSTR('https://www.example.com/page', '(https?|ftp)://([^/]+)/') AS host,REGEXP_SUBSTR('https://www.example.com/page', '(https?|ftp)://[^/]+(/.+)') AS path
    FROM dual;
    

    这将返回https://www.example.com/page

验证IP地址
  • 可以使用REGEXP_LIKE函数来验证IP地址。例如:

    SELECT ip FROM ips WHERE REGEXP_LIKE(ip, '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$');
    
提取字符串中的邮件地址
  • 可以使用REGEXP_SUBSTR函数来提取字符串中的邮件地址。例如:

    SELECT REGEXP_SUBSTR('My email is john.doe@example.com.', '([A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})') AS email FROM dual;
    

    这将返回john.doe@example.com

替换HTML标签
  • 可以使用REGEXP_REPLACE函数来替换HTML标签。例如:

    SELECT REGEXP_REPLACE('<p>Hello World</p>', '<[^>]+>', '') FROM dual;
    

    这将返回Hello World

提取字符串中的电话号码
  • 可以使用REGEXP_SUBSTR函数来提取字符串中的电话号码。例如:

    SELECT REGEXP_SUBSTR('My phone number is (123) 456-7890.', '\((\d{3})\)\s*(\d{3})-(\d{4})') AS phone FROM dual;
    

    这将返回(123) 456-7890

匹配信用卡号
  • 可以使用REGEXP_LIKE函数来匹配信用卡号。例如:

    SELECT card FROM cards WHERE REGEXP_LIKE(card, '^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$');
    
提取字符串中的URL
  • 可以使用REGEXP_SUBSTR函数来提取字符串中的URL。例如:

    SELECT REGEXP_SUBSTR('Check out https://www.example.com.', '(https?|ftp)://[^\s/$.?#].[^\s]*') AS url FROM dual;
    

    这将返回https://www.example.com

匹配社会安全号码
  • 可以使用REGEXP_LIKE函数来匹配社会安全号码。例如:

    SELECT ssn FROM ssns WHERE REGEXP_LIKE(ssn, '^\d{3}-\d{2}-\d{4}$');
    

以上的每个案例都展示了正则表达式在实际应用中的使用,包括提取、替换、验证和匹配等多种场景。

相关文章:

【oracle】正则表达式

文章目录 1.介绍1.1 什么是正则表达式1.2 什么是Oracle正则表达式 2. Oracle正则表达式的基础知识2.1 常用的元字符2.2 常用的转义序列2.3 常用的量词 3. Oracle正则表达式的函数3.1 REGEXP_LIKE3.2 REGEXP_SUBSTR3.3 REGEXP_REPLACE3.4 REGEXP_INSTR3.5 REGEXP_COUNT 4. Oracl…...

如何找到网上爆款内容,快速复制扩大品牌声量

社媒内容爆款复制是现代营销中的一个重要策略&#xff0c;它对于提升品牌声量、曝光度和知名度具有显著效果。 首先什么是爆款&#xff1f; 爆款内容指的是在社交媒体或其他在线平台上迅速获得大量关注、分享和讨论的内容。 准确、及时找到这部分品牌相关的爆款内容&#xf…...

补齐:相交链表:扣160

梦重新开始的地方 – 相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。图示两个链表在节点 c1 开始相交&#xff1a; 示例&#xff1a; 何解&#xff1f; 暴力&…...

Java项目实战II基于Java+Spring Boot+MySQL的智能推荐的卫生健康系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 基于Java、…...

NET Core的AOP实施方法1 DispatchProxy

NET Core的AOP实施方法1 DispatchProxy NET Framework的AOP实施方法1 ContextBoundObject NET Framework的AOP实施方法2 RealProxy 源码见Github DispatchProxy NET Core DispatchProxy 是一个在 .NET 框架中引入的概念&#xff0c;特别是在 C# 语言中。它是一种特殊类型的代…...

AIGC生成式人工智能——泼天的富贵(三)

人工智能作为第四次工业革命的标志性技术&#xff0c;正在深刻地改变着全球经济、社会结构和人类生活方式。 今天的人工智能&#xff0c;就像当年的房地产经济&#xff0c;未来至少会有十年的红利期。 一、人工智能&#xff0c;给我带来了第二桶金 你永远赚不到你认知以外的…...

GetX的一些高级API

目录 前言 一、一些常用的API 二、局部状态组件 1.可选的全局设置和手动配置 2.局部状态组件 1.ValueBuilder 1.特点 2.基本用法 2.ObxValue 1.特点 2.基本用法 前言 这篇文章主要讲解GetX的一些高级API和一些有用的小组件。 一、一些常用的API GetX提供了一些高级…...

【笔面试常见题:三门问题】用条件概率、全概率和贝叶斯推导

1. 问题介绍 三门问题&#xff0c;又叫蒙提霍尔问题&#xff08;Monty Hall problem&#xff09;&#xff0c;以下是蒙提霍尔问题的一个著名的叙述&#xff0c;来自Craig F. Whitaker于1990年寄给《展示杂志》&#xff08;Parade Magazine&#xff09;玛丽莲沃斯莎凡特&#x…...

刘艳兵-DBA011-应用使用Oracle数据库,必须启动哪些服务?

应用使用Oracle数据库&#xff0c;必须启动哪些服务&#xff08; &#xff09; A OracleServiceSID B OracleJobSchedulerSID C OracleMTSRecoveryService D OracleHOME_NAMETNSListener 答&#xff1a; A OracleServiceSID D OracleHOME_NAMETNSListener…...

注释多行代码的vim插件

编写vim 插件代码 add_comments.vim function! AddComment()let l:comment #if &filetype cpplet l:comment //elseif &filetype clet l:comment //endiflet [l:start, l:end][ line("<"), line(">") ]let l:commented_lines []for …...

Docker 安装HomeAssistant智能家居系统

HomeAssistant 介绍 简介 Home Assistant是一个自由开源的智能家居自动化平台&#xff0c;它可以控制并监测各种智能家居设备、传感器和其他物联网设备。Home Assistant可以运行在树莓派、NVIDIA Jetson Nano等低功耗设备上&#xff0c;使用户可以快速搭建自己的智能家居系统。…...

21 Docker容器集群网络架构:四、Docker集群网络验证

文章目录 Docker容器集群网络架构:四、Docker集群网络验证4.1 创建网络4.2 查看创建的网络4.2.1 查看节点1创建的网络4.2.2 查看节点2创建的网络4.2.3 查看节点3创建的网络4.3 运行容器并查看4.3.1 运行容器4.3.2 节点1查看4.3.3 节点2查看4.3.4 节点3查看Docker容器集群网络架…...

【Kaggle | Pandas】练习5:数据类型和缺失值

文章目录 1. 获取列数据类型.dtype / .dypes2. 转换数据类型.astype()3. 获取数据为空的列 .isnull()4. 将缺少值替换并且排序.fillna()&#xff0c;.sort_values() 1. 获取列数据类型.dtype / .dypes 数据集中points列的数据类型是什么&#xff1f; # Your code here dtype …...

《YOLO 目标检测》—— YOLO v4 详细介绍

文章目录 一、整体网络结构1. YOLO v4 网络结构图2.对之前版本改进创新的概括 二、对改进创新部分的具体介绍1. 输入端创新2. Backbone主干网络创新CSPDarknet53Mish激活函数Dropblock正则化 3. 特征融合创新SPP模块PAN结构 4. Prediction输出层创新&#xff08;未写完&#xf…...

Ubuntu:通过ssh链接另外一台Ubuntu

本文将介绍通过ssh链接另外一台Ubuntu的方法。 一、安装openssh-server sudo apt update sudo apt install openssh-server二、查看SSH是否运行 sudo systemctl status ssh三、链接 ssh usernameremote_ip_address四、复制A电脑的文件到本地 scp usernameremote_ip_addres…...

黄山谷捷提交创业板IPO注册,募资扩产提升综合竞争力

近日&#xff0c;黄山谷捷股份有限公司&#xff08;下文称“黄山谷捷”&#xff09;申请深交所创业板IPO审核状态变更为“提交注册”。据悉&#xff0c;本次IPO黄山谷捷拟募资50,201.19万元&#xff0c;分别用于功率半导体模块散热基板智能制造及产能提升项目&#xff0c;研发中…...

(python)如何进行加密

代码效果是将输入的四个数字每个加上7&#xff0c;然后除以10的余数&#xff0c;接着再将第一个数字和第三个数字对调&#xff0c;第二个数字和第四个数字对调 # 获取用户输入的四位数字符串 list1 input("请输入你四位数密码&#xff1a;") # 初始化一个空列表来存…...

夸克网盘免费扩容 20T 福利,无限次叠加,亲测有效

新用户用夸克 APP 存资源可得 1T 永久存储空间 &#x1f6a8;此方法仅试用于新用户&#xff0c;并且只能在手机上打开夸克 APP 中去领取&#xff01;pc&#xff0c;ipad 都不行&#xff01;&#xff01;&#xff01; 使用手机打开夸克 APP&#xff0c;保存以下资源可获取 1T …...

开源协议类型及长安链开源协议介绍

截至目前&#xff0c;我国参与国际开源社区协作的开发者数量排名全球第二并推出了众多社区活跃度较高的高质量开源项目&#xff0c;是全球开源生态的重要贡献力量&#xff0c;但在开源治理方面我国还处于发展初期&#xff0c;大部分开发者对开源的印象还限于开放代码、免费使用…...

SQL Server 可观测最佳实践

SQL Server 简介 SQL Server 是微软公司开发的一款关系数据库管理系统&#xff0c;支持企业 IT 环境中的各种事务处理、商业智能和分析应用程序。它支持多种操作系统平台&#xff0c;而无论是物理还是虚拟形式&#xff0c;自建部署环境还是在云环境中&#xff0c;运行的操作系…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下&#xff0c;推客小程序系统凭借其裂变传播、精准营销等特性&#xff0c;成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径&#xff0c;助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架&#xff0c;并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下&#xff0c;重新定义算法中的某些步骤。简单来说&#xff0c;就是在一个方法中定义了要执行的步骤顺序或算法框架&#xff0c;但允许子类…...