精华内容
下载资源
问答
  • 序列:是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。占用磁盘空间,占用内存。其主要用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至...

    一、简述

    MySQL 可以通过设置主键自增长实现 ID 的递增,但是 Oracle 数据库中并没有自增字段,Oracle 使用序列来实现ID“自增长”。Oracle 序列主要用于生成流水号,在应用中经常会用到,特别是作为 ID 值,拿来做表主键使用较多。序列:是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。不占用磁盘空间,占用内存。其主要用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。

    二、语法

    1、Create sequence (生成20位)

    DECLARE
        NUM NUMBER;
    BEGIN
        SELECT COUNT(*)
          INTO NUM
          FROM DBA_OBJECTS DB
         WHERE DB.OBJECT_TYPE = 'SEQUENCE'
               AND DB.OWNER = 'USER_ME'
               AND DB.OBJECT_NAME = 'SEQ_ME_LSH';
        IF NUM = 0
        THEN
            EXECUTE IMMEDIATE 'create sequence USER_ME.SEQ_ME_LSH  minvalue 10000000000000000000 maxvalue 99999999999999999999 start with 10000000000000000000 increment by 1 cache 30';
        END IF;
    END;
    /
    

    2、对所有用户开放该序列

    create or replace public synonym SEQ_ME_LSH for USER_ME.SEQ_ME_LSH;
    

    3、Delete sequence

    drop sequence SEQ_NAME;
    

    4、查询序列的值

    当刚创建好序列后,不能直接查询当前序列的值,必须先用 nextval 查询下一个序列的值,之后才可以使用currval查询当前序列的值。

    select SEQ_NAME.currval from dual;
    select SEQ_NAME.nextval from dual;
    

    5、更改当前序列值

    -- n 为数字,可正可负可零
    alter sequence SEQ_NAME increment by n;
    
    展开全文
  • uuid:(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码...

    uuid:(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得)

    select LOWER(rawtohex(sys_guid())) from dual;
    
    展开全文
  • 1.java生成32随机不重复数字+字母(做主键) 调用:  String ID = GuidUtil.generate(); GuidUtil.java: /** * */ package com.select.controller; /** * 生成GUID编码(使用hibernate的uuid生成机制) ...

    1.java生成32位随机不重复数字+字母(做主键)

    调用:
     String ID = GuidUtil.generate();
    GuidUtil.java:
    
    /**
     * 
     */
    package com.select.controller;
    
    
    /**
     * 生成GUID编码(使用hibernate的uuid生成机制)
     * 
     * @author 
     * @since 2013-06-24
     * @version 1.0
     * @see
     */
    public class GuidUtil
    {
    	private GuidUtil()
    	{
    		
    	}
    	
    	/**
    	 * 生成GUID编码
    	 */
    	public static String generate()
    	{
    		UUIDGenerator uGenerator = new UUIDGenerator();
    		String uuid = String.valueOf(uGenerator.generate());
    		return uuid;
    	}
    	
    	
    	public static void main(String[] a)
    	{
    		System.out.println(GuidUtil.generate());
    	}
    }
    
    package com.jbfs.base.util;
    
    import java.io.Serializable;
    import java.net.InetAddress;
    
    public class UUIDGenerator
    {
    	private static final int IP;
    
    	protected static int IptoInt(byte[] bytes)
    	{
    		int result = 0;
    		for (int i = 0; i < 4; i++)
    		{
    			result = (result << 8) - Byte.MIN_VALUE + (int) bytes[i];
    		}
    		return result;
    	}
    
    	static
    	{
    		int ipadd;
    		try
    		{
    			ipadd = IptoInt(InetAddress.getLocalHost().getAddress());
    		}
    		catch (Exception e)
    		{
    			ipadd = 0;
    		}
    		IP = ipadd;
    	}
    
    	private static short counter = (short) 0;
    
    	private static final int JVM = (int) (System.currentTimeMillis() >>> 8);
    
    	protected UUIDGenerator()
    	{
    	}
    
    	/**
    	 * Unique across JVMs on this machine (unless they load this class in the
    	 * same quater second - very unlikely)
    	 */
    	protected int getJVM()
    	{
    		return JVM;
    	}
    
    	/**
    	 * Unique in a millisecond for this JVM instance (unless there are >
    	 * Short.MAX_VALUE instances created in a millisecond)
    	 */
    	protected short getCount()
    	{
    		synchronized (UUIDGenerator.class)
    		{
    			if (counter < 0)
    				counter = 0;
    			return counter++;
    		}
    	}
    
    	/**
    	 * Unique in a local network
    	 */
    	protected int getIP()
    	{
    		return IP;
    	}
    
    	/**
    	 * Unique down to millisecond
    	 */
    	protected short getHiTime()
    	{
    		return (short) (System.currentTimeMillis() >>> 32);
    	}
    
    	protected int getLoTime()
    	{
    		return (int) System.currentTimeMillis();
    	}
    
    	private final static String sep = "";
    
    	protected String format(int intval)
    	{
    		String formatted = Integer.toHexString(intval);
    		StringBuffer buf = new StringBuffer("00000000");
    		buf.replace(8 - formatted.length(), 8, formatted);
    		return buf.toString();
    	}
    
    	protected String format(short shortval)
    	{
    		String formatted = Integer.toHexString(shortval);
    		StringBuffer buf = new StringBuffer("0000");
    		buf.replace(4 - formatted.length(), 4, formatted);
    		return buf.toString();
    	}
    
    	protected Serializable generate()
    	{
    		return new StringBuffer(36).append(format(getIP())).append(sep).append(format(getJVM())).append(sep).append(format(getHiTime())).append(sep).append(format(getLoTime())).append(sep).append(format(getCount())).toString();
    	}
    	
    	
    	public static void main(String[] args)
    	{
    		UUIDGenerator u = new UUIDGenerator();
    		long lstart = System.currentTimeMillis();
    		int num = 100;
    		for(int i=0;i<num;i++)
    		{
    			String id = String.valueOf(u.generate());
    			//System.out.println("#################UUID:" + id);
    		}
    	}
    	
    
    }
    

     

     

    2.向oracle表中插入32随机不重复主键语句

     

     

    create or replace function get_user   
    return varchar2   
    is   
    Result varchar2(50);   
    begin   
    select SYS_GUID() into Result from user_users;   
    return(Result);  
    end get_user; 
    select get_user from user_users;
    
    update CB_SHIPBASEDINFO(表名) set ID(主键id) = get_user 
    where REGISTRATIONNUMBER(主键id) in (select REGISTRATIONNUMBER(主键id) from CB_SHIPBASEDINFO(表名));

     

    展开全文
  • 8位UUID思想其实借鉴微博短域名的生成方式,但是其重复概率过高,而且每次生成4个,需要随即选取一个。 本算法利用62个可打印字符,通过随机生成32UUID,由于UUID都为十六进制,所以将UUID分成8组,每4个为一组...

    短8位UUID思想其实借鉴微博短域名的生成方式,但是其重复概率过高,而且每次生成4个,需要随即选取一个。

    本算法利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六进制,所以将UUID分成8组,每4个为一组,然后通过模62操作,结果作为索引取出字符,

    这样重复率大大降低。

    经测试,在生成一千万个数据也没有出现重复,完全满足大部分需求。

    代码如下,复制可用:
    一般授权码,二维码等需要唯一不重复且不需要很长的场景用到:

    package org.sang.test;
    
    import java.util.UUID;
    
    /**
     * @Author: chuxia0811
     * @Date: 2021/5/11 22:18
     * @Description :
     */
    public class UUIDCode {
        public static String[] chars = new String[] { "a", "b", "c", "d", "e", "f",
                "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
                "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
                "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",
                "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
                "W", "X", "Y", "Z" };
    
    
        public static String generateShortUuid() {
            StringBuffer shortBuffer = new StringBuffer();
            String uuid = UUID.randomUUID().toString().replace("-", "");
            for (int i = 0; i < 8; i++) {
                String str = uuid.substring(i * 4, i * 4 + 4);
                int x = Integer.parseInt(str, 16);
                shortBuffer.append(chars[x % 0x3E]);
            }
            return shortBuffer.toString();
    
        }
        public static void main(String[] args) {
            System.out.println(generateShortUuid());
        }
    }
    
    

    运行如下:

    L2C3q6ce
    
    展开全文
  • oracle8i以后提供了一个生成不重复数据的一个函数sys_guid()一共32,生成的依据主要是时间和机器码,具有世界唯一性,类似于java中的UUID(都是世界唯一的)。 其优点就是生成的字符串是唯一的,但其和UUID有...
  • 获取不重复的6位数字串或者8位数字串,保存在数据库中,下次获取的不能与之前的重复
  • oracle8i以后提供了一个生成不重复数据的一个函数sys_guid()一共32,生成的依据主要是时间和机器码,具有世界唯一性,类似于java中的UUID(都是世界唯一的)。 其应用场景:当数据库某字段设置为唯一,则可...
  • 前段时间做给联通做了一个考评系统,是一个二级部门用于员工之间年度打分...密码要示是8位,还得有字母和数据。不是很难。于是我在sql/sql上写了一个函数 CREATE OR REPLACE FUNCTION RANDOM_PASSWORD (IN_TEMPLATE IN
  • oracle生成不重复随机数

    万次阅读 2012-11-16 15:17:48
    1.创建FUNCTION fn_ifrandom(其中用到递归) CREATE OR REPLACE FUNCTION fn_ifrandom (tmpallrandom IN clob,tmprandom IN VARCHAR2,allcount in number) ...IS --生成不重复的随机数 randomchar varchar2(5);
  • 转载:https://www.jb51.net/article/41338.htm
  • oracle8i以后提供了一个生成不重复数据的一个函数sys_guid()一共32,生成的依据主要是时间和机器码,具有世界唯一性,类似于java中的UUID(都是世界唯一的)。 其优点就是生成的字符串是唯一的,但其和UUID有...
  • NULL 博文链接:https://yizhilong28.iteye.com/blog/835190
  • dbms_random.value(low,high): --获取一个[low,high)之间的小数,包含low,包含high 可以结合trunc函数获取整数 例如: select dbms_random.value from dual; --生成0-1之间的小数 select dbms_random.value(0,10) ...
  • 查了下相关表的结构和数据,发现有一列ID的值是这种形式的193ded83-f22c-11e8-b606-02007b91000e,要想批量插入数据,就得先生成这个ID,而且要保证生成不重复,不然可能会因为主键约束插入不成功。 上网看看大神...
  • Oracle 如何生成连续的数字/字符/时间序列

    千次阅读 多人点赞 2020-07-16 18:17:20
    介绍如何在 Oracle生成连续的数字、字符以及时间序列值。 包括使用CONNECT BY 层次查询和模拟的 PL/SQL 函数 generate_series 生成连接的数字序列、间隔的数字序列、连续的字符序列以及间隔的时间序列,使用通用...
  • ID ID(Hex) Name ID ID(Hex) Name ID ID(Hex) Name 1 0001 US7ASCII 2 0002 WE8DEC 3 0003 WE8HP 4 0004 US8PC437 5 0005 WE8EBCDIC37 6 0006 WE8EBCDIC500 7 0007 WE8EBCDIC1140 8 0008 WE8EBCDIC285 9 0009
  • (1)oracle生成不重复字符串 在oracle8i以后提供了一个生成不重复的数据的一个函数sys_guid()一共32,生成的依据主要是时间和机器码,具有世界唯一性,类似于java中的UUID(都是世界唯一的)。其优点就是生成的...
  • 由于业务需求,产品编号某些位数是字母,字母也是需要连续的,前2固定,,能出现"E","I","O"。比如客户指定产品编号类似是“0A00A0000A00” 字母位数是字母,不够进一,"A"--->"B" ,而数字进一就简单。 这里有两种...
  • uuid生成12随机数 不重复

    万次阅读 2015-08-24 18:52:15
    for (int i = 0; i String s = UUID.randomUUID().toString();...s = s.substring(0,8)+s.substring(9,13)+s.substring(14,18)+s.substring(19,23)+s.substring(24);  System.out.println(s.substring(0, 12));
  • 存放随机数的表结构: create table COUPON_CODE ...需求说明:生成1亿条随机数存放到code字段,字段id为主键,取值从1到1亿,要求code值为从1到1亿之间的随机数,且重复,code字段类型为字...
  • 介绍如何在 Oracle 数据库中使用系统程序包 DBMS_RANDOM 生成随机数据,包括随机数字、验证码、随机字符串以及随机日期和时间等,同时还介绍了如何从表中返回随机记录,以及如何生成 UUID。
  • 该程序根据Excel文件的第一个Sheet页内容,生成数据库表,并将数据导入生成的表中; 操作说明:1>:输入数据库相关信息,登陆数据库; 2>:选择Excel文档,输入设置信息,创建数据库表结构; 3>:点击导入数据按钮...
  • ORACLE 生成GUID

    千次阅读 2019-09-02 15:46:33
    项目中若采用oracle数据库,则主键生成可以有两种方式,一是用sys_guid(),二是定义一个sequence,然后用nextval得到ID。 Oracle的定义sequence例子: create sequence seq_test minvalue 10000 maxvalue ...
  • Oracle中如何用一条SQL快速生成10万条测试数据

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 75,695
精华内容 30,278
关键字:

oracle生成8位不重复数字