首页 > 数据库 >【Oracle】在PL/SQL中使用sql实现选择排序

【Oracle】在PL/SQL中使用sql实现选择排序

时间:2023-07-08 16:02:25浏览次数:126  
标签:SQL number pkg sql Oracle 排序 data PL

【Oracle】在PL/SQL中使用sql实现选择排序

一般来说,SQL要排序的话直接使用order by即可

不一般来说,就是瞎搞,正好也可以巩固自己的数据结构基础

使用SQL实现排序系列:
使用SQL实现冒泡排序

以下是正文:

规范:

create or replace package data_structure_pkg is
  procedure xuanze_get_data(p_data varchar2);
end data_structure_pkg;

体:

create or replace package body data_structure_pkg is
  --------------------以下为排序部分----------------------
  --定义一个存储数据的临时表
  type numtable1 is table of long index by binary_integer;
  ---------------------------------
  --选择排序主方法
  procedure xuanze_get_data(p_data varchar2) is
    v_data numtable1;
    n      number := 1;
    p_num  number;
    p_min  number;
  begin
    --以;作为分隔符,将数字进行分离
    for sub_data in (select tt.data as sdata
                       from (select regexp_substr(p_data, '[^;]+', 1, level) data
                               from dual bd
                             connect by level <=
                                        regexp_count(p_data, ';') + 1) tt
                      where rownum <= regexp_count(p_data, ';') + 1) loop
      --放入临时表
      v_data(n) := sub_data.sdata;
      --打印出来原顺序的数据
      dbms_output.put_line('排序前第' || n || '位:' || v_data(n) || '|');
      --递增
      n := n + 1;
    end loop;
    dbms_output.put_line('-------------------------------------');
    /********
    首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
    再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾
    *********/
    --排序
    for i in 1 .. v_data.count loop
      p_min := i;
      --依次提取i次下标位数字
      for j in (i + 1) .. v_data.count loop
        if to_number(v_data(j)) < to_number(v_data(p_min)) then
          --记录目前能找到的最小值元素的下标
          p_min := j;
        end if;
      end loop;
      --将找到的最小值和i位置所在的值进行交换
      if i != p_min then
        p_num := to_number(v_data(i));
        v_data(i) := v_data(p_min);
        v_data(p_min) := p_num;
      end if;
    end loop;
    --打印出来排序以后的数据
    for z in 1 .. v_data.count loop
      dbms_output.put_line('排序后第' || z || '位:' || v_data(z) || '|');
    end loop;
  end xuanze_get_data;

end data_structure_pkg;

输入数据

2;34;1;5;9;8;6;13;25;24;56

得到结果

image

标签:SQL,number,pkg,sql,Oracle,排序,data,PL
From: https://www.cnblogs.com/jokingremarks/p/17537347.html

相关文章

  • 麒麟V10服务器PHP连接MySQL报错PHP Warning: mysqli_connect(): Unexpected server r
     1.问题描述这个警告表示在进行缓存的caching_sha2认证过程中,服务器返回了一个意外的响应码99。这是由于MySQL服务器的配置或版本与使用的客户端库不兼容导致的。2.解决办法a.检查MySQL客户端版本:确保你使用的MySQL客户端版本与服务器版本兼容。如果......
  • postgresql-用户管理
    1、连接数据库远程连接$psql-Upostgres-h192.168.3.105-dpostgres-p1921-W允许远程连接需要配置以下两个配置配置监听地址$vim/pgdata/postgresql.conflisten_addresses='0.0.0.0'客户端认证配置$vim/pgdata/pg_hba.confhostallall......
  • DVWA-SQL盲注
    尝试1到10发现只有存在5个数据库id接下来判断是什么类型的说明是字符型的判断数据库长度1'andlength(database())=4#说明数据库只有四个字节接下来猜/判断字符串ASCII第一个字符1'andASCII(substr(database(),1,1))>97#正确1'andASCII(substr(database(),1,1))>......
  • mysql常用命令有哪些?
    mysql常用命令退出mysql: exit查看mysql中有哪些数据库?showdatabase; 以英文的分号结尾mysql>showdatabases;+--------------------+|Database|+--------------------+|dbtest1||dbtest2||dbtest3||information_sc......
  • 如何实现MySQL大表查询慢的具体操作步骤
    MySQL大表查询慢的问题解决流程对于MySQL大表查询慢的问题,我们可以采取以下流程进行解决。以下表格展示了整个流程,以及每一步需要做的事情和相应的代码。步骤操作代码1检查索引SHOWINDEXFROMtable_name;2优化查询语句EXPLAINSELECT*FROMtable_nameWHERE......
  • 解决MySQL存储较长的字符串的具体操作步骤
    MySQL存储较长的字符串在数据库中,我们经常需要存储各种类型的数据。有时,我们需要存储较长的字符串,如文章内容或者文本文件。MySQL是一个流行的关系型数据库管理系统,它提供了多种方式来存储较长的字符串数据。本文将介绍在MySQL中存储较长的字符串的几种常用方法,并提供相应的代码示......
  • 如何实现MySQL创建排班表的具体操作步骤
    MySQL创建排班表在现代社会中,许多企事业单位都需要对员工进行排班管理,以保证工作的正常运转。MySQL作为一个强大的关系型数据库管理系统,可以很好地满足这个需求。本文将介绍如何使用MySQL创建一个排班表,并通过代码示例演示其使用方法。创建数据表首先,我们需要创建一个数据表来存......
  • 如何实现MySQLn元关系是指关系中的具体操作步骤
    MySQL多元关系的实现概述在MySQL数据库中,多元关系是指一个关系表中包含多个外键,从而实现多个表之间的关联。通过多元关系,我们可以在数据库中存储和查询多个表之间的关联数据,从而提高数据的查询效率和准确性。实现步骤下面是实现MySQL多元关系的一般步骤:步骤描述1创......
  • 解决MySQL5.5安装无响应的具体操作步骤
    MySQL5.5安装无响应MySQL是一种开源的关系型数据库管理系统,被广泛应用于Web应用程序的后台数据存储和管理。然而,在安装MySQL5.5版本时,有时候会出现无响应的情况,给用户带来困扰。本文将介绍可能导致MySQL5.5安装无响应的原因,并提供相应的解决方案。原因分析系统冲突:安装MySQL5.......
  • 如何实现MySQL 字符串转换成数组的具体操作步骤
    MySQL字符串转换成数组在MySQL中,我们经常需要对字符串进行处理和转换。有时候,我们需要将一个字符串拆分成多个部分,然后进行进一步的处理。这时,将字符串转换成数组是一种常见的操作。方法一:使用SUBSTRING_INDEX函数MySQL提供了SUBSTRING_INDEX函数,可以用于将一个字符串按照指定......