文章分享一篇关于自己的学习笔记,oracel中字符串分割成集合详解有需要学习的同学可以看看。
首先分别使用两种方式构造两个函数
代码如下 | 复制代码 |
-- use conventional plsql return l_list; -- use single sql return l_list; |
确认两种方法完成同样的功能
----------------------------------------------------
代码如下 | 复制代码 |
-- same result SQL> set serveroutput on
|
我们知道在PL/SQL和SQL里面,varchar2类型的长度限制是不同的。那么这两种方法是否也存在同样的限制?验证一下
先测试PL/SQL版本
-- 这里使用单个字母作为元素,加上必要的逗号分割符,一个元素占用长度2. PL/SQL中上限32767。当取(32767/2 = 16383)个元素的时候,运行成功
----------------------------------------------------
代码如下 | 复制代码 |
-- pls versions tring length limit l_list := f_str2list_pls(l_str, ','); PL/SQL procedure successfully completed |
代码如下 | 复制代码 |
declare l_list := f_str2list_pls(l_str, ','); ORA-06502: PL/SQL: numeric or value error: character string buffer too small -- 修改一下代码,实际调用这个函数。从结果可以看到,f_str2list_pls()内部报超长错误 l_list := f_str2list_pls(l_str||',a', ','); |
下面测试SQL版本
代码如下 | 复制代码 |
-- 因为SQL中varchar2上限是4000,所以使用2000个元素。一切正常。 l_list := f_str2list_sql(l_str, ','); PL/SQL procedure successfully completed |
代码如下 | 复制代码 |
declare l_list := f_str2list_sql(l_str, ','); |
测试比较两种方式在不同数据量下的性能
代码如下 | 复制代码 |
---------------------------------------------------- -- warm up before actually calculation
|
我们分别测试当元素个数为100, 200, 500, 1000, 2000的情况。每种情况进行3-5次然后取平均
元素个数
PL/SQL 运行时间 (1/100 second)
SQL 运行时间 (1/100 second)
PCT
100
1
1
100%
200
1
1 - 2
50% - 100%
500
1 - 2
2 - 3
30% - 50%
1000
1
4
25%
2000
2
10
20%
总结:
SQL版本的书写简便,并且可以脱离PL/SQL环境直接使用(单条SQL进行行列转换)。
SQL版本只能处理长度小于4000的字符串,实际最大只能包含2000个元素。PL/SQL版本可以处理长度小于32767的字符串。
小数据量情况下,两者性能相当。随着数据量增大,PL/SQL版本性能明显占优

Python是一种流行的编程语言,它提供了许多内置函数来处理字符串。其中一个常用的函数是split()函数,可以按照指定的分隔符将字符串分割成多个子串。本文将介绍如何在Python3.x中使用split()函数。在Python中,split()函数是字符串类的一个内置函数,它的基本语法如下:string.split(separator,maxsplit)

在本文中,我们将探讨如何找到具有唯一字符的字符串的最大化分区的长度问题。我们首先了解问题陈述,然后研究解决这个问题的朴素和高效方法,包括它们各自的算法和时间复杂度。最后,我们将在C++中实现解决方案。问题陈述给定一个字符串,将字符串分割为尽可能多的子字符串,使得字符串中的每个字符只出现在一个子字符串中。返回这些最大化分割的长度。天真的方法天真的方法是通过字符串迭代,记录每个字符的最后出现位置。然后,再次迭代字符串,并在找到当前字符的最后出现位置时创建分区。算法(朴素)初始化一个数组以存储字符串中

如何在PHP中将字符串分割为数组在PHP中,我们经常需要处理字符串,并将其拆分为多个部分。将字符串分割为数组是一种常见的操作,可以帮助我们更好地处理字符串的各个部分。在本文中,我们将学习如何使用PHP中的函数将字符串分割为数组,并提供一些代码示例。使用explode函数将字符串分割为数组PHP提供了一个名为explode的函数,可以将字符串按照指定的分隔符进

在这个问题中,我们将计算将给定的字符串划分为K个子字符串的方法,使其满足问题陈述中给出的条件。我们将使用递归来解决这个问题。此外,我们还将使用表格动态规划方法来高效解决这个问题。问题陈述−我们有一个名为bin_Str的特定长度的字符串。该字符串只包含从'0'到'9'的数字字符。我们需要计算将字符串分割成K个子字符串的方式数,使其满足以下条件。子字符串应至少包含2个字符。每个子字符串的第一个字符应为偶数,最后一个字符应为奇数。示例示例输入M=2,K=2;bin_str="255687&q

PHP中有许多字符串函数,其中字符串分割函数是非常常用的。字符串分割函数可以将一个字符串按照指定的分隔符进行分割,并返回一个数组。下面我们就来介绍几个常用的字符串分割函数。explode函数explode函数可以将字符串按照指定的分隔符进行分割,并返回一个数组。其语法如下:explode(string$separator,string$string

在PHP语言中,有很多基础函数可以帮我们快速有效地处理字符串。其中,explode函数是一个很实用的字符串分割函数。它可以将一个字符串按照指定的分割符分割成数组,进而进行更为灵活的字符串操作。在本文中,我们将会介绍PHP中如何使用explode函数来分割字符串。一、explode函数格式explode函数在PHP语言中的格式如下:explode(separa

在这个问题中,我们需要分割给定的字符串,使得第三个子字符串可以是前两个子字符串的子字符串。让我们想想解决办法。仅当前两个字符串包含第三个字符串的所有字符时,第三个字符串才可以是前两个字符串的子字符串。所以,我们需要在给定的字符串中找到至少一个出现频率大于3的字符,并且我们可以取该单个字符的第三个子串。问题陈述-我们给出了一个包含N个小写字母字符的字符串str。我们需要检查是否可以将字符串拆分为三个子字符串a、b和c,使得子字符串c是a和b的子字符串。根据是否能找到3个子串,打印“yes”或“no

解决PHP中explode函数报错的方法,需要具体代码示例在PHP中,explode函数是用于将字符串按照指定的分隔符拆分成数组的函数。然而,有时候在使用explode函数时会出现报错的情况,主要是因为传入的参数不符合函数的要求所导致的。下面我们将针对可能出现的问题和解决方法进行详细讨论,并且提供具体的代码示例。参数个数错误导致的报错当使用explode函数


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver CS6
视觉化网页开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具