ORALCE substr函数及substrb与字符集关系

这篇具有很好参考价值的文章主要介绍了ORALCE substr函数及substrb与字符集关系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ORALCE substr函数及substrb与字符集关系

 

语法

ORALCE substr函数及substrb与字符集关系

   函数用途: SUBSTR函数用来截取从源字符(参数 char)中截取一部分目标字符,截取方式为限定从源字符截取起始位置(参数 positon),并限定截取目标字符长度(参数 substring_length)。substr系列函数计算目标字符长度及开始截取字符位置长度的方式有所不同——substr函数为字符,substrb为字节,substrc为UNICODE完全字符集,substr2为UCS2编码代码点,substr4为ucs4编码代码点。

 

 

  • 参数position为0时,按1处理。
  • 参数position为正数时,ORACLE数所库查询时从左到右从第一个字符开始计数。
  • 参数position 为负数时,查询从右向左从倒数第一个字符开始计数。
  • 参数substring_length可为空,为空时直接从position位置开始向后截取所有字符(含position位置字符)。哪果substring为负值 ,则substr函数返还null。

   char参数类型可以是 char,varchar2,nchar,nvarchar2,clob或者nclob,但除substr与substrb函数外,另外三个substr系列函数的参数char类型不允许 为CLOB(character large object) 或者NCLOB类型。position与substringlength参数数据类型必须是number数值型,或者可以被隐式转换为number型的数据类型,并且最终最必须可以被转换为整型。返回值的类型一般与char参数的数据类型一致,但char、nchar类型的参数返回值实际上分别为varchar2 、nvarchar2类型.position与substringlength参数如果为浮点型数据则被直接自动处理为整型数据。

   示例:
   1.

   SELECT SUBSTR('ABCDEFG',3,4) "Substring" FROM DUAL;
  

   以上语句返回'CDEF',即从第三个字符'C'开始,向右截取长度为4的目标字符,为'CDEF'.

 


   2.

   SELECT SUBSTR('ABCDEFG',-5,4) "Substring" FROM DUAL;
  

   以上语句返回'CDEF',即从倒数第五个字符'C'开始,向右截取长度为4的目标字符,为'CDEF'.此处position参数为负值值是起始位置计算从右向左,但截取方向依然为从左向右,而instr(string,substring,position,occurence)函数position参数为负值 时,不仅取起始位置是从右向左,并且匹配计算目标字符串出现次数方向也是从右向左。

 


3.

SELECT SUBSTRB('ABCDEFG',5,4.2) "Substring with bytes" FROM DUAL;  

   substrb函数与substr函数不同之处在于它以字节来计数,而substr函数仅单纯以字符来计算,不论是中文还是英文。因此,由于数据库系统字符集编码方式的不一致,不同数据库系统执行上述语句结果可能有所不同。例3示例语句在GBK字符集下,字母占1字节,因此返还值为'EFG',即从第5个字节'E'开始,向右截取4个字节(不满4个截到末尾即可);而如果是UNICODE字符集,中英文均占2字节,因此返还值为'CD'.下面是一些常见的编码格式字符所占字节情况:

 

  • 1、ASII:美国标准信息交换码,用一个字节的7位可以表示。无汉字字符,一个字母对应一个字节。;
  • 2、ISO8859-1:拉丁码表,欧洲码表,用一个字节的8位可以表示;
  • 3、GBK2312:中国的中文编码表,最多两个字节编码所有字符。一个汉字2字节,一个字母1字节;
  • 4、GBK:中国的中文编码表升级,融合了更多的中文文字字符,最多两个字节编码。一个汉字2字节,一个字母1字节;
  • 5、Unicode:国际标准码,融合了目前人类使用的所有字符,为每个字符分配唯一的字符码,所有的文字都用两个字节来表示;
  • 6、utf-8:变长的编码方式,可用1-4个字节来表示一个字符。现在最多的又有6个字节。一个汉字3字节,一个字母1字节; -7、utf-16:中文和字母都是占2个字节。 -8、utf-32:中文和字母都是占4个字节。

ORACLE字符串存储方式

   ORACLE数据库中varchar2类型字符串有varchar2(n char) 和varchar2(n byte)两种存放方式。一般直接定义为varchar2(n),这样ORALCE会根据配置文件中的设置选择以字节还是以字符为单位。查看具体是以哪种方式可能在PLSQL命令行输入以下命令查看value值:

show parameter nls_length

 

ORACLE字符集

   可能通过以下语句查询当前登录数据库字符集:

elect userenv('language') from dual;


   ORACLE的字符存储方式与字符集共同决定了一个varchar2型字段能存储什么长度什么形式的字符,比如:一个varchar2(4)长度的字段,如果 采用的是GBK编码方式,即一个汉字占2字节,字母占1字节,且存储方式为byte,则此字段最多存储2汉字,4字母。

 

参考文档 ORALCE官网 SQL Language Reference:https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/About-SQL-Functions.html#GUID-D51AB228-518C-4213-8BD4-F919623D105E文章来源地址https://www.toymoban.com/news/detail-591202.html

到了这里,关于ORALCE substr函数及substrb与字符集关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux字符集详解

    计算机中处理和储存信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照某种规则将字符存储在计算机中,如’a’用97表示,称为\\\"编码\\\";反之,将计算机中的二进制数解析显示出来,称为\\\"解码\\\"。在解码过程中,

    2024年02月06日
    浏览(51)
  • oracle 字符集

      NLS_NCHAR_CHARACTERSET  国家字符集 NLS_CHARACTERSET  字符集 -----字符集和国家字符集的区别 字符集用来存储CHAR,VARCHAR2,CLOB,LONG等类型数据。 国家字符集用以存储NCHAR,NVARCHAR2,NCLOB等类型数据。

    2024年01月24日
    浏览(43)
  • (三) MySQL字符集

    MySQL字符集包括 基字符集 (CHARACTER)与 校对规则 (COLLATION)这两个概念: latin1支持西欧字符、希腊字符等 gbk支持中文简体字符 big5支持中文繁体字符 utf8几乎支持世界所有国家的字符 utf8mb4是真正意义上的utf-8 查看当前数据库默认的字符集: SHOW VARIABLES like \\\'character%\\\'; MySQL在

    2024年01月24日
    浏览(58)
  • 字符集详解

    计算机底层不可以直接存储字符的。 计算机中底层只能存储二进制(0、1) 。 二进制是可以转换成十进制的。 结论:计算机底层可以表示成十进制编号。计算机可以给人类字符进行编号存储,这套编号规则就是字符集。 ASCII(American Standard Code for Information Interchange,美国信息交

    2024年02月07日
    浏览(41)
  • TiDB字符集和时区

    TiDB 字符集和时区 mysql select @@version; +--------------------------------------+ | @@version | +--------------------------------------+ | 5.7.10-TiDB-v2.1.0-beta-179-g5a0fd2d | +--------------------------------------+ 1 row in set (0.00 sec) mysql show variables like \\\'coll%\\\'; +----------------------+-------------------+ | Variable_name | Value | +---

    2024年02月16日
    浏览(53)
  • 【PG】PostgreSQL字符集

    目录 设置字符集 1 设置集群默认的字符集编码 2 设置数据库的字符集编码 查看字符集 1 查看数据字符集编码  2 查看服务端字符集 3 查看客户端字符集 4 查看默认的排序规则和字符分类  被支持的字符集 PostgreSQL里面的字符集支持你能够以各种字符集存储文本,包括 单字节字

    2024年02月08日
    浏览(43)
  • 常用ASCII字符集(做题用)

    以下是ASCII字符集的一部分,包括可打印字符和控制字符。ASCII(美国信息交换标准代码)是一种用于表示文本字符的字符编码标准,使用7位二进制数来表示128个不同的字符。 这是ASCII字符集的一个简短示例。其中包含了常见的可打印字符、数字和标点符号,以及控制字符。

    2024年02月08日
    浏览(41)
  • Azure sqlserver 更改字符集

    我们的Azure SQL Server是在2018年建的,当时还不支持汉字的字符集。然后最近发现因为字符集的缘故,出了bug,要调整字符集。然后就照着sqlserver 排序规则(字符集)查看与修改 一通修改。 然后神奇的事情来了,Sql Server 刚建好的时候,可以改DB的字符集。但是已经存在的DB,

    2024年02月11日
    浏览(39)
  • Linux的字符集及编码

    Linux 字符集设置 1、查询 (1) 查看当前服务器字符集:  # locale  (2) 查看服务器支持的字符集:  # locale -a 2、修改linux系统字符集的方式有如下两种: (1) 直接设置变量的方式修改,命令如下两条命令: [root~]# LANG=\\\"xxx\\\" 或者  export  LANG=\\\"xxx\\\"  [root ~]# LC_ALL=\\\"xxx\\\"  或者  export LC_ALL

    2024年02月09日
    浏览(44)
  • 【MySQL】——数据类型及字符集

    🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL:数据结构_IT闫的博客-CSDN博客 🐠数据结构:​​​​​​数据结构_IT闫的博客-CSDN博客 💎C++:C++_IT闫的博客-CSDN博

    2024年02月03日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包