java oracle 连接字符串函数_通过shell来比较oracle和java中的字符串使用

这些准备工作齐了之后,我们来从Java中的字符串使用入手来比较一下oracle中对于字符串的处理。

java中有如下的一些函数,我会依次来做比较。

public char charAt(int index)

返回字符串中第index个字符;

oracle中可以使用substr来简单实现,需要注意两种方式的下标,在java的charAt中是以0开始,而在oracle中的substr中则是以1开始计数的。

[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd").charAt(2)'

c

[ora11g@rac1 ~]$ ksh test2.sh "substr('abcd',3,1)"

S

-

c

public int length()

返回字符串的长度;

oracle中可以使用length函数,使用方式也是很类似的。

[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd").length()'

4

[ora11g@rac1 ~]$ ksh test2.sh "length('abcd')"

LENGTH('ABCD')

--------------

4

public int indexOf(String str)

返回字符串中第一次出现str的位置;

oracle中可以使用instr来模拟实现,而且oracle可以更加的灵活。注意下标的不同

ksh test1.sh 'new String("abcdc").indexOf("c")'

2

[ora11g@rac1 ~]$ ksh test2.sh "instr('abcdc','c',1,1)"

INSTR('ABCDC','C',1,1)

----------------------

3

顺便扩展一下,oracle中如果要得到某个字符串第几次出现的下标,相对就更直接了,比如字符串“abcdc"中第二次出现字符c的下标

[ora11g@rac1 ~]$ ksh test2.sh "instr('abcdc','c',1,2)"

INSTR('ABCDC','C',1,2)

----------------------

5

public int indexOf(String str,int fromIndex)

返回字符串从fromIndex开始第一次出现str的位置;

oracle中还是使用Instr,而且使用方法和上例类似。

我们对字符串abcd从下标为1,即字符b所对应的下标开始。

[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcdc").indexOf("c",1)'

2

[ora11g@rac1 ~]$ ksh test2.sh "instr('abcdc','c',2,1)"

INSTR('ABCDC','C',2,1)

----------------------

3

public boolean equalsIgnoreCase(String another)

比较字符串与another是否一样(忽略大小写);

oracle中实现方式略有不同,不过可以直接转换为大写或者小写即可。

[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd").equalsIgnoreCase("abcD")'

true

SQL> select 1 from dual where upper('abcD')='ABCD';

1

----------

1

public String replace(char oldchar,char newChar)

在字符串中用newChar字符替换oldChar字符

oracle中的使用也有replace函数,用法也是一致的。

[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd").replace("c","g")'

abgd

[ora11g@rac1 ~]$ ksh test2.sh "replace('abcd','c','g')"

REPL

----

abgd

public boolean startsWith(String prefix)

判断字符串是否以prefix字符串开头;

public boolean endsWith(String suffix)

判断一个字符串是否以suffix字符串结尾;

oracle中的实现可以通过匹配符%来实现,也可以使用正则表达式。

[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd").startsWith("a")'

true

[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd").endsWith("d")'

true

SQL> select 1 from dual where 'abcd' like 'a%';

1

----------

1

SQL> select 1 from dual where 'abcd' like '%d';

1

----------

1

public String toUpperCase()

返回一个字符串为该字符串的大写形式;

public String toLowerCase()

返回一个字符串为该字符串的小写形式

oracle中有upper()和lower()方法,用法效果是一致的。

[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd").toUpperCase()'

ABCD

[ora11g@rac1 ~]$ ksh test1.sh 'new String("ABcd").toLowerCase()'

abcd

[ora11g@rac1 ~]$ ksh test2.sh "upper('abcd')"

UPPE

----

ABCD

[ora11g@rac1 ~]$ ksh test2.sh "lower('ABcd')"

LOWE

----

abcd

public String substring(int beginIndex)

返回该字符串从beginIndex开始到结尾的子字符串;

public String substring(int beginIndex,int endIndex)

返回该字符串从beginIndex开始到endsIndex结尾的子字符串

oracle中也有substring,相比来说功能要更丰富,注意在java中是substring,而在oracle是substr

[ora11g@rac1 ~]$ ksh test1.sh 'new String("ABcd").substring(1)'

Bcd

[ora11g@rac1 ~]$ ksh test2.sh "substr('ABcd',1)"

SUBS

----

ABcd

[ora11g@rac1 ~]$ ksh test1.sh 'new String("ABcd").substring(1,2)'

B

[ora11g@rac1 ~]$ ksh test1.sh 'new String("ABcd").substring(1,3)'     --注意这种用法的下标,当下标为(1,3)时,才会输出下标为1和2的字符。

Bc

[ora11g@rac1 ~]$ ksh test2.sh "substr('ABcd',1,2)"   --注意oracle中的小标是从1开始,最后的参数2代表需要截取的字符串长度为2,所以截取了AB

SU

--

AB

public String trim()

返回该字符串去掉开头和结尾空格后的字符串

oracle中有trim函数,而且还有ltrim,rtrim等支持的功能也要丰富一些。

[ora11g@rac1 ~]$ ksh test1.sh 'new String("abcd ").trim()'

abcd

[ora11g@rac1 ~]$ ksh test2.sh "trim('abcd ')"

TRIM

----

abcd

ltrim就是截取左边的空白字符,rtrim就是截取右边的空白字符。

[ora11g@rac1 ~]$ ksh test2.sh "ltrim(' abcd')"

LTRI

----

abcd

public String[] split(String regex)

将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组

oracle中目前没有发现有现成的方法实现,只能自己DIY通过pl/sql来实现,内部也是在使用substr来递归解析。

下面的例子会将字符串”abcd abcd"以空格分割,最后返回的是一个数组,我们来看看里面的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java私有构造函数不能阻止继承

下面是一个调用已经私有化的单列的函数的列子. 这里用了静态内部类,关键就是静态内部类可以访问外部类的私有构造函数。 这种算是变种继承吧。前提是可以在原来的单列类里添加代码。 class Single { private Single(){ System.out.println(&q…

Flask + vue 前后端分离的 二手书App

一个Flask vue 前后端分离的 二手书App 效果展示: https://blog.csdn.net/qq_42239520/article/details/88534955 所用技术清单 项目地址:项目地址 vue代码地址:vue代码地址 项目部分过程笔记: 后台: 项目结构 Second…

Mac OS X Glut build instructions

Mac OS X Glut build instructions(在Mac上用glut库编写OpenGL程序) Wentao Sun, Autodesk, Inc. 1. Building GLUT apps under Mac OS X There are only a few modifications you need to make to the robot.c sample to get it compiled on your Mac. These instruction…

李战java_【阿里李战】解剖JavaScript中的 null 和 undefined

在JavaScript开发中,被人问到:null与undefined到底有啥区别?一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理。于是,细想之后,写下本文,请各位大侠拍砖。总所周知&…

Android -- 获取摄像头帧数据解码

由于Android下摄像头预览数据只能 ImageFormat.NV21 格式的,所以解码时要经过一翻周折. Camera mCamera Camera.open();Camera.Parameters p mCamera.getParameters();p.setPreviewFormat(ImageFormat.NV21);/*这是唯一值,也可以不设置。有些同学可能…

跨域方法

1.jsonp,原理利用script的src属性(像img,iframe等有src属性的都支持跨域)引入js文件,并在引入成功后调用回调函数,数据通过参数的形式传过来。 例: 2.window.name 3.document.domain 4.h5的方法:window.postMessage 5.flash 6.COR…

C#发送Email邮件方法总结

通过.Net FrameWork 2.0下提供的“System.Net.Mail”可以轻松的实现,本文列举了3种途径来发送: 1.通过Localhost; 2.通过普通SMTP; 3.通过SSL的SMTP; 下面一个一个来说: 1.通过LocalHost 1public void SendMailLocalhost() 2 ...{…

java多线程之wait_(三)java多线程之wait notify notifyAll

引言今天我打算讲一下Object.wait,Object.notify,Object.notifyAll这三个方法. 首先我们查看一下api看看,官方api对这几个方法的介绍.理论Object.wait(): 导致当前线程一直等待,直到另一外一个线程用同一个对象调用Object.notify或Object.notifyAll方法.换种说法,就是调用Objec…

得不到和已失去

凉凉滑滑,这样的天气,我该喜欢的,就像在酷暑时所盼望的一样。可是又一次在凌晨凉飕飕的空气中醒来时,为什么我却倍感凄凉的蜷成一团怀念盛夏的热烈了呢。更加恶劣的是,为什么在正午炙热的阳光下,我却又在怀…

lightoj 1020 (博弈)

思路&#xff1a;很简单的博弈&#xff0c;找出每个人先拿的必胜态进行状态转移即可。#include<cstdio> #include<string> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int main(){int t, n, CASE(0);char …

2019 GDUT Rating Contest II : A. Taming the Herd

题面&#xff1a; A. Taming the Herd Input file: standard inputOutput file: standard outputTime limit: 1 secondMemory limit: 256 megabytesEarly in the morning, Farmer John woke up to the sound of splintering wood. It was the cows, and they were breaking out…

仅对此用户禁用 java_Spring Security实现禁止用户重复登陆的配置原理

这篇文章主要介绍了Spring Security实现禁止用户重复登陆的配置原理,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下系统使用了Spring Security做权限管理&#xff0c;现在对于系统的用户&#xff0c;需要改动配…

SQL server 系统优化--通过执行计划优化索引(1) (转)

SQL server 系统优化--通过执行计划优化索引&#xff08;1&#xff09; 前几天,远离上海&#xff0c;到了温州&#xff0c;在客户的这边处理系统慢&#xff0c;该系统每天正常down机7次左右&#xff0c;在线人员一多&#xff0c;系统运行缓慢&#xff0c;严重影响业务操作,到了…

Linux运维系统工程师系列---13

定制安装定制安装&#xff0c;也叫源码安装&#xff0c;需要自己编译源代码的安装方式步骤&#xff1a;1、解压源代码包2、配置 configure3、编译 make4、安装 make install接下来开始做实验&#xff0c;希望朋友们自己动手实践&#xff0c;有啥不清楚的可以直接提问我&#xf…

java system.setproperties_在JAVA中 System.getProperty 和 System.setProperty 方法.

今天着手研究TOMCAT源码.在刚開始的时候Startup类中init方法中调用非常多次System.getProperty和System.setProperty的方法.后来经过网上搜索才得知,这是对操作系统变量操作的方法.System还提供一个静态方法 System.getProperties(). 这种方法能够罗列出你系统的所有变量.调用S…

雷林鹏分享:XML 编码

XML 编码 XML 文档可以包含非 ASCII 字符&#xff0c;比如挪威语 &#xff0c;或者法语 。 为了避免错误&#xff0c;需要规定 XML 编码&#xff0c;或者将 XML 文件存为 Unicode。 XML 编码错误 如果您载入一个 XML 文档&#xff0c;您可以得到两个不同的错误&#xff0c;…

C#中理解接口以及接口的作用

在C#的开发中&#xff0c;接口是非常重要也非常好用的。可是很多时候很多人都不是很了解接口的做用&#xff0c;以及该如何使用。下面我们就来理解接口的作用&#xff0c;并看看如何使用吧。假设我们公司有两种程序员&#xff1a;VB程序员&#xff0c;指的是用VB写程序的程序员…

java开发中遇到的问题及解决方法(持续更新)

工作中&#xff0c;以C/C开发为主&#xff0c;难免与其他服务和Web进行交换&#xff0c;Java开发必不可少&#xff0c;又不想动用Eclipse大家伙&#xff0c;只能自己动手编写脚本进行Java代码的编译和运行&#xff0c;期间遇到的一些问题&#xff0c;记录下来供自己和大家参考。…

c语言转化java工具_详解C语言常用的一些转换工具函数

1、字符串转十六进制代码实现&#xff1a;void StrToHex(char *pbDest, char *pbSrc, int nLen){char h1,h2;char s1,s2;int i;for (i0; i{h1 pbSrc[2*i];h2 pbSrc[2*i1];s1 toupper(h1) - 0x30; //toupper 转换为大写字母if (s1 > 9)s1 - 7;s2 toupper(h2) - 0x30;if (…

vue项目使用eslint

转载自 https://www.cnblogs.com/hahazexia/p/6393212.html eslint配置方式有两种&#xff1a; 注释配置&#xff1a;使用js注释来直接嵌入ESLint配置信息到一个文件里配置文件&#xff1a;使用一个js&#xff0c;JSON或者YAML文件来给整个目录和它的子目录指定配置信息。这些配…