`

汉字和字符分开(整理)--补充(所用函数说明)

阅读更多

1、substr()

     substr('This is a test', 6, 2)          would return 'is'
     substr('This is a test', 6)              would return 'is a test'
     substr('TechOnTheNet', 1, 4)     would return 'Tech'
     substr('TechOnTheNet', -3, 3)    would return 'Net'
     substr('TechOnTheNet', -6, 3)     would return 'The'
     substr('TechOnTheNet', -8, 2)     would return 'On'

2、insert()

     例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始    位置为3,取第2个匹配项的位置。

默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。

所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "Instring" FROM DUAL的显示结果是

Instring
——————
14

 

  3、oracle中length()与lengthb()区别

 

SQL> select length('阿猪') from dual;

LENGTH('阿猪')
--------------
             2

SQL> select lengthb('阿猪') from dual;

LENGTHB('阿猪')
---------------
              4

 

SQL> select lengthb('镀锌钢管*6m') from dual;

LENGTHB('镀锌钢管*6M')
-------------------------
                       14

SQL> select length('镀锌钢管*6m') from dual;

LENGTH('镀锌钢管*6M')
------------------------
                      10

 

 

4、oracle中的正则表达式(regular expression)

 

正则表达式是很多编程语言中都有的。可惜oracle8i、oracle9i中一直迟迟不肯加入,好在oracle10g中终于增加了期盼已久的正则表达式功能。你可以在oracle10g中使用正则表达式肆意地匹配你想匹配的任何字符串了。

所谓正则表达式是对于字符串进行匹配的一种模式。举个例子来说字符串’^198[0-9]$’可以匹配‘1980-1989’,也即80后出生的年份。如果希望统计出公司那些员工是80后的,就可以使用如下的SQL语句:
select * from emp where regexp_like(to_char(birthdate,’yyyy’),’^198[0-9]$’);

这里用到了regexp_like和to_char函数。

这里在正则表达式中用到的^、$、[0-9]都被称为元数据(metacharacter),正则表达式都是由多元表达式组成的。在这里,^表示一个字符串的开头,$表示一个字符换的结尾,因此^198表示以198开头的字符串,而[0-9]$则表示以0-9的数字结尾的字符串。因此整体上’^198[0-9]$’就能匹配所有1980-1989的字符串。

正则表达式中常用到的元数据(metacharacter)如下:

  1. ^  匹配字符串的开头位置。
  2. $  匹配支付传的结尾位置。
  3. *  匹配该字符前面的一个字符0次,1次或者多次出现。例如52*oracle 可以匹配 5oracle,52oracle,522oracle,5222oracle等等。
  4. + 匹配该字符前面的一个字符1次或者多次出现。例如52+oracle 可以匹配 52oracle,522oracle,5222oracle等等
  5. ?  匹配该字符前面的一个字符0次或1次或者多次出现。例如52?oracle 只能匹配5oracle,52oracle等等
  6. {n} 匹配一个字符串n次,n为正整数。例如:hel{2}o 所匹配的是hello
  7. {n,m} 匹配一个字符串至少n次,至多m次。其中n和m都是整数。
  8. .  匹配除了null之外的任何单个字符串
  9. (pattern) 这个是用来匹配指定模式的一个子表达式
  10. x|y  匹配x或者y,其中x和y是一个或者多个字符
  11. [abc] 匹配括号中的任意一个字符。例如:[ab]bc可以匹配abc和bbc
  12. [a-z] 匹配指定范围内的任意字符串。例如[A-G]hi可以匹配Ahi至Ghi
  13. [::]指定一个字符类,可以匹配该类中的任意字符 这里的字符类包括:
    • [:alphanum:] 可以匹配字符0-9、A-Z、a-z
    • [:alpha:]可以匹配字符A-Z、a-z
    • [:blank:]可以匹配空格或者tab键
    • [:digit:]可以匹配数字 0-9
    • [:gragh:]可以匹配非空字符
    • [:punct:]可以匹配. , ” ‘等标点符号。
    • [:upper:]可以匹配字符A-Z
    • [:lower:]可以匹配字符a-z

这里列出的是一些常见的正则表达式中的元数据。更多的正则表达式的内容请参照oracle官网上的正则表达式的相关内容

关于orace中的正则表达式只能通过oracle特意为正则表达式设计的4个函数来使用。这4个函数分别是:
regexp_like,regexp_instr,regexp_replace,regexp_substr。关于这4个函数的具体用法,会在稍后介绍,这里简单说一下:

  1. regexp_like(x,pattern)当x能正确匹配字符串时返回true。
  2. regexp_instr(x,pattern)在x中尝试匹配pattern,并返回匹配的位置。
  3. regexp_replace(x,pattern,replacestring)在x中尝试匹配pattern,并将其替换成replacestring。
  4. regexp_substr(x,pattern)返回x中匹配pattern的一个字符串。

关于这几个函数的具体用法会稍后详细介绍。

<!---->
这里我们在介绍一个函数regexp_instr。这个正则表达式函数用的不如前一个多,但也会偶尔会用到。这个函数其实与我们前面曾介绍的instr函数其实相似。

regexp_instr的原型如下:
regexp_instr(x,pattern[,start[,occurrence[,return_option[,match_option]]]])
这里每个参数分别含义如下:

  1. x  待匹配的字符串
  2. pattern 待匹配的模式
  3. start   开始匹配的位置,如果不指定默认为1
  4. occurrence  匹配的次数,如果不指定,默认为1
  5. return_option  指定返回值的类型,如果该参数为0,则返回值为匹配位置的第一个字符,如果该值为非0则返回匹配值的最后一个位置。
  6. match_option 可以用这个参数来修改一些默认的配置设置。这个值与前面所说的regexp_like函数中的match_option参数的意义是一样的。

下面来举几个有关regexp_instr函数的例子:
select (’i love www.52oracle.com’,'o[[:alpha:]]{4}e$’,1,1) as r from dual
这个例子从’i love www.52oracle.com’这个字符串中匹配一个模式,这个模式是以o开头,以e结尾,在o和e之间有4个字符的字符串。这样自然而然就返回oracle的起始位置14

另一个例子是:
select (’i love www.52oracle.com’,'o[[:alpha:]]{2}’,1,2,1) as r from dual
这个例子的含义是在’i love www.52oracle.com’这个字符串中匹配另一个模式,这个模式是以o开始,再包含两个字符的一个模式,因此这个模式可以是ove,也可是ora但是我们要求它匹配两次,因此这个SQL语句的结果是ora所在的位置,所在的什么位置呢?因为我们的return_option参数的值是1,即大于0,所以这的结果是16,也就单词oracle中a所在的位置。

<!---->
分享到:
评论

相关推荐

    数据库字符串相加---字符串相加函数

    根据提供的信息,本文将详细介绍一个在SQL Server 2000环境下用于字符串拼接的自定义函数,并对该函数的功能、实现方法以及应用场景进行深入解析。 ### 一、SQL Server 2000简介 SQL Server 2000是微软发布的一款...

    车牌字符数据集-69类-包含汉字-英文-数字-两种

    这个数据集包含了69个不同的字符类别,其中包括汉字、英文和数字,这使得它非常适合用于训练深度学习模型进行复杂的字符识别任务。数据集分为两种格式,可能是两种不同的背景色或者是字符与背景的不同处理方式,以...

    301-用指针数组作为函数的参数显示多个字符串(51单片机C语言实例Proteus仿真和代码)

    301-用指针数组作为函数的参数显示多个字符串(51单片机C语言实例Proteus仿真和代码)301-用指针数组作为函数的参数显示多个字符串(51单片机C语言实例Proteus仿真和代码)301-用指针数组作为函数的参数显示多个字符串...

    中文-In-Sight-使用详解及函数库说明

    《中文-In-Sight-使用详解及函数库说明》是一份深度解析康耐视In-Sight视觉系统的资源集合,包括了《中文-In-Sight-使用详解-(全).pdf》和《In-Sight速查库函数.pdf》两个核心文档,旨在帮助用户全面理解和熟练运用...

    各种C语言字符串函数-笔试面试必备

    在C语言中,字符串处理是程序员必须掌握的基本技能之一,尤其在笔试和面试环节中,考察字符串函数的使用与自定义实现非常常见。以下是对几种常见的C语言字符串函数的深入解析及其实现方式。 #### 1. 字符串反转 - ...

    elf 加密 - 字符串加密 - 函数加密

    elf 加密项目,功能有:1)字符串加密(.rodata),2)函数加密 加密算法PRESENT(分组密码算法,速度快,实现简单。但可以通过差分分析破解,折中考虑),密钥由blake244生成(单向哈希,SHA-3备选,速度快) ...

    305-字符串函数string.h应用举例(51单片机C语言实例Proteus仿真和代码)

    305-字符串函数string.h应用举例(51单片机C语言实例Proteus仿真和代码)305-字符串函数string.h应用举例(51单片机C语言实例Proteus仿真和代码)305-字符串函数string.h应用举例(51单片机C语言实例Proteus仿真和代码)...

    VBA 函数在字符串处理中应用

    - **3.4.1 Len函数**:返回字符串的长度(包括空格和不可见字符)。 - **3.4.2 LenB函数**:返回字符串的字节数量(在双字节字符集中更为重要)。 ##### 3.5 格式化字符串 - **3.5.1 Format函数**:按照指定格式...

    单片机C语言实例--305-字符串函数string.h应用举例.zip

    `string.h`库提供了一系列方便的函数,用于在单片机环境中进行字符串的创建、比较、复制、查找和修改等任务。 1. **字符串函数介绍**: - `strlen()`:计算字符串的长度,不包括结束符'\0'。 - `strcpy()`:用于...

    获取中文字符串长度的函数(VB6.0代码编写)

    由于中文字符占用的字节数不同于英文字符(每个中文字符通常占用2个字节,而英文字符占用1个字节),因此不能简单地用Len函数来计算中文字符串的长度。这个问题的解决方案是编写一个专门用于计算中文字符串长度的...

    C语言字符串操作函数.docx

    ### C语言字符串操作函数知识点详解 #### 一、strtok() — 字符串分割函数 - **功能**:`strtok()` 函数用于将一个字符串按照指定的分隔符分割成多个子字符串,并返回第一个子字符串。 - **语法**: ```c char *...

    VB6.0 UTF-8转换GB2312函数

    UTF-8是一种广泛使用的Unicode编码,而GB2312是中国大陆常用的简体中文字符集,主要用于早期的计算机系统。在这个场景下,我们通常需要编写自定义函数来完成这种转换。 以下是一个简单的VB6.0函数示例,用于将UTF-8...

    网页编程-ASP字符串函数大全

    ASP字符串函数是Web开发中处理文本数据的重要工具,主要用于创建、操作和管理字符串。这些函数在ASP(Active Server Pages)环境中提供了丰富的功能,使开发者能够有效地处理字符串数据。以下是一些主要的ASP字符串...

    汉字字符串拼音排序-QT、C++

    在中文环境中,由于汉字的特性,拼音排序成为一种实用的需求,特别是在需要按照汉字拼音首字母来排列字符串的场景下。"汉字字符串拼音排序-QT、C++"的主题涉及到如何在QT和C++环境中实现这样的功能。 首先,让我们...

    sql-函数大全-常用函数整理.doc

    例如,如果你想检查字符串是否包含特定字符,你不能直接使用类似`IndexOf()`的非SQL函数,而应该使用SQL内置的`CHARINDEX()`或`PATINDEX()`函数。比如`SELECT 字段 1 FROM 表 1 WHERE CHARINDEX('云', 字段 1) = 1;`...

    pb-获取汉字首字母函数

    标题中的“pb-获取汉字首字母函数”指的是在PowerBuilder(PB)开发环境中实现的一个功能,该功能允许程序获取汉字字符的首字母。这在处理大量汉字数据时非常有用,例如进行拼音排序、搜索或者创建索引。在中文环境...

    测量程序编制 - python 15数据类型:String(字符串)-字符串常用函数.pptx

    字符串有多种操作和函数,本篇文章将详细讲解其中的一些常用函数,包括类型转换、获取字符串长度、执行字符串表达式以及字符串的切片操作。 1. 类型转换:Python中的`str()`函数用于将其他类型的数据转换成字符串。...

    SQL-Server字符串处理函数大全.doc

    本文将详细介绍 SQL Server 中常用的字符串处理函数,并通过示例说明如何正确使用它们。 #### 二、字符转换函数 **1. ASCII()** - **功能**:返回给定字符表达式的第一个字符的 ASCII 码。 - **语法**: ```sql ...

    C语言字符串替换函数strrpl支持中文汉字

    C语言字符串替换函数strrpl支持中文汉字,解决含中文汉字,可能替换错误的情况。支持GBK、GB18030字符串。

    C_宽字符处理函数函数与普通函数对照表(转).docx

    在C语言中,宽字符处理函数是用于处理宽字符(如UTF-16或UTF-32编码的字符)的特殊函数,它们与处理普通字符(通常为ASCII编码的单字节字符)的函数有所不同。宽字符处理函数主要用于处理多语言环境和非ASCII字符集...

Global site tag (gtag.js) - Google Analytics