oracle 数据库 怎么把一个表中的一个字段按规律拆分,并显示出来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 数据库 怎么把一个表中的一个字段按规律拆分,并显示出来相关的知识,希望对你有一定的参考价值。

oracle 数据库有一个表
ID 名字
1 张三_北京
2 李四_上海
有没有什么函数,可以在数据库把名字那个以-分割 展示出来是
1 张三 北京
就是要求用SQL的,前几天下载资料分用完了。。实在是没有了。。那个大神帮忙出手一下。。谢了

1、首先需要sys或system权限操作

2、查询需要更改表的ID

select object_id  from all_objects where owner = 'ITHOME'
and object_name = 'TEST';1234

注:ITHOME为用户,TEST是要更改的表,表名要大写

3、通过ID查出该表所有字段的顺序

select obj#, col#, name
from sys.col$
where obj# = '103756' order by col#123

4、修改顺序

update sys.col$ set col#=2 where obj#=103756 and name='AGE';update sys.col$ set col#=3 where obj#=103756 and name='NAME';12

或直接在第三步的语句后面加 for update 进行修改

最后commit提交 并且重启Oracle服务

参考技术A oracle 数据库拆分字段的实现方法:
用正则表达式拆分某一个字段,比如有a,b,c,d,e

sql写法如下:
select regexp_substr('a,b,c,d,e,','[^,]+',1,rownum)
from dual connect by rownum<=length(regexp_replace('a,b,c,', '[^,]', null))
结果:
执行结果如下:
1 a
2 b
3 c
4 d
5 e
参考技术B select id,replace(name ,'_',' ') from 表名 参考技术C select id,substr(name,1,instr(name,'_')-1) as 名字,substr(name,instr(name,'_')+1) as 地名 from tableName 参考技术D select id,substr(name,1,instr(name,'_')-1),substr(name,instr(name,'_')+1) from tableName本回答被提问者采纳

oracle数据库的一个表中,怎么设置字段的默认值

这个默认时间没问题,默认的‘无’不管用,怎么办啊?

如果表已经存在,用如下方法设置默认值:

alter table 表名 modify 字段名 default 默认值;

如test表中设置age字段为30,可用如下语句:

alter table test modify age default 30;

扩展资料:

Oracle关于默认值的其他用法

添加、修改默认值:alter table table_name modify column_name default 具体内容;

删除默认值:alter table table_name modify column_name default null;

增加列(约束、默认值)

语法:alter table tb_name add column datatype [default val] constraint .....

如果添加not null(primary key约束要求值也不能为null)约束,需要保证当前表中没有数据存在。

新添加的列,相当于表定义中最后一个定义的列。

参考技术A

如果表已经存在,用如下方法设置默认值。

alter table 表名 modify 字段名 default 默认值;

如test表中设置age字段为30,可用如下语句:

alter table test modify age default 30;

测试:

添加一条记录:

insert into test (name) values ('du小智');

结果:

这里可以看到du小智的默认age则为30。

参考技术B create table TEST(id number,name varchar2(10),create_date date default sysdate);
其中字段:create_date的默认值就是系统时间。

create table TEST(id number,name varchar2(10),create_date varchar2 default '无');
其中字段:create_date的默认值就是字符串“无”。

看了你的例子,觉得很晕。。。按你的表设计的那一列应该是date类型,你希望默认日期是无,那就允许为空就是,默认的应该是null值,也就是你所谓的“无”,如果你希望他显示“无”,那么这一列应该设置为varchar2类型即可。但是问题由来了,你就不可以直接使用sysdate往表里插入日期了,必须使用to_char函数来修改一下,即to_char(sysdate,'yyyy-MM-dd'),才可以插入此列。
参考技术C create table Z_test007
(
RECOID NUMBER(14) not null,
OID NUMBER(14) not null,
SUBSID NUMBER(14) not null,
REGION NUMBER(5) not null,
CUGID NUMBER(10) not null,
name1 varchar2(32) default '无');
参考技术D create table 表名 (
id varchar2(10) default '0000000000'
)

以上是关于oracle 数据库 怎么把一个表中的一个字段按规律拆分,并显示出来的主要内容,如果未能解决你的问题,请参考以下文章

怎么把同一个表中的字符串字段连接起来

oracle中的一张表 想将表中所有字段里的数据中含有“”的把引号去掉 该怎么写

SQL怎么把一个表字段信息(ID)修改为对应另一个表的内容

在oracle中怎么对一张表中的列进行循环,比如说,我执行第一个字段,再执行第二个。。。一直到N

在oracle中怎么查一个表中的的一个字段的重复数据

oracle怎么将表中字段的很长的字符串数据更改其中一两个字符