数据库insert数据,我想在数据前加前缀,应该怎么写呢?

雨中的路- 2017-04-05 03:25:23
我首先创建了一个序列用于ID的自增长
SQL> create sequence deviceID increment by 1 start with 1 ;
然后我想插入ID,但我想在序列的自增长基础上加前缀,比如CP之类的
SQL> insert into device_cpbasic(id,isenable) values ('cp0001'+deviceID.nextval,3);
但是报错,求解
...全文
436 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 版主 2017-04-05
  • 打赏
  • 举报
回复
引用 13 楼 xiangluer 的回复:
完了,发现用了||自增长毫无规律。。。求解求解
不会的,贴一下你的结果
雨中的路- 2017-04-05
  • 打赏
  • 举报
回复
引用 10 楼 wmxcn2000 的回复:
[quote=引用 7 楼 xiangluer 的回复:] [quote=引用 5 楼 wmxcn2000 的回复:] [quote=引用 4 楼 xiangluer 的回复:] 谢谢你的回答,但我是想在id的前面加前缀额,就是我根据序列产生id,但我想在id前面加前缀
1、说一下,你是哪种数据库, oracle 、sql server 还是 什么其他的; 2、给一些示例结果出来;[/quote] 我是oracle数据库, 就想让这个表的id自增长,但是我们需要加一个CP0000的前缀,谢谢了[/quote] 用 1# 的代码就可以了,简单的修改一下。[/quote] 完了,发现用了||自增长毫无规律。。。求解求解
雨中的路- 2017-04-05
  • 打赏
  • 举报
回复
引用 3 楼 wmxcn2000 的回复:
看错板块了,忽略 1#,参考 2# ;
我知道了,这里面不能用+,要用||,谢谢啦
雨中的路- 2017-04-05
  • 打赏
  • 举报
回复
引用 10 楼 wmxcn2000 的回复:
[quote=引用 7 楼 xiangluer 的回复:] [quote=引用 5 楼 wmxcn2000 的回复:] [quote=引用 4 楼 xiangluer 的回复:] 谢谢你的回答,但我是想在id的前面加前缀额,就是我根据序列产生id,但我想在id前面加前缀
1、说一下,你是哪种数据库, oracle 、sql server 还是 什么其他的; 2、给一些示例结果出来;[/quote] 我是oracle数据库, 就想让这个表的id自增长,但是我们需要加一个CP0000的前缀,谢谢了[/quote] 用 1# 的代码就可以了,简单的修改一下。[/quote] 那个是建了个触发器啊,我把那个name改成了id,那我在插入的时候该怎么改呢?因为我改错了。。。所以只能再来问问,谢谢了
卖水果的net 版主 2017-04-05
  • 打赏
  • 举报
回复
引用 7 楼 xiangluer 的回复:
[quote=引用 5 楼 wmxcn2000 的回复:] [quote=引用 4 楼 xiangluer 的回复:] 谢谢你的回答,但我是想在id的前面加前缀额,就是我根据序列产生id,但我想在id前面加前缀
1、说一下,你是哪种数据库, oracle 、sql server 还是 什么其他的; 2、给一些示例结果出来;[/quote] 我是oracle数据库, 就想让这个表的id自增长,但是我们需要加一个CP0000的前缀,谢谢了[/quote] 用 1# 的代码就可以了,简单的修改一下。
雨中的路- 2017-04-05
  • 打赏
  • 举报
回复
引用 8 楼 sinat_28984567 的回复:
oracle没用过。。。搞不了了,看1#层主给你解答吧。。
谢谢了
二月十六 版主 2017-04-05
  • 打赏
  • 举报
回复
oracle没用过。。。搞不了了,看1#层主给你解答吧。。
雨中的路- 2017-04-05
  • 打赏
  • 举报
回复
引用 5 楼 wmxcn2000 的回复:
[quote=引用 4 楼 xiangluer 的回复:]
谢谢你的回答,但我是想在id的前面加前缀额,就是我根据序列产生id,但我想在id前面加前缀


1、说一下,你是哪种数据库, oracle 、sql server 还是 什么其他的;
2、给一些示例结果出来;[/quote]

我是oracle数据库,
就想让这个表的id自增长,但是我们需要加一个CP0000的前缀,谢谢了
雨中的路- 2017-04-05
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
CREATE TABLE #test
    (
      id INT IDENTITY ,
      FormatId AS 'cp0001' + RTRIM(Id) ,
      F1 VARCHAR(50)
    )
GO
INSERT  #test
        ( F1 )
        SELECT  '1'
        UNION ALL
        SELECT  '2'
  
  
SELECT  *
FROM    #test
  
DROP TABLE #test
谢谢你的回答,可是我是直接想增加前缀额。。。不是很懂
卖水果的net 版主 2017-04-05
  • 打赏
  • 举报
回复
引用 4 楼 xiangluer 的回复:
谢谢你的回答,但我是想在id的前面加前缀额,就是我根据序列产生id,但我想在id前面加前缀
1、说一下,你是哪种数据库, oracle 、sql server 还是 什么其他的; 2、给一些示例结果出来;
雨中的路- 2017-04-05
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:

SQL> 
SQL> create table test(id int, name varchar(30));
Table created
SQL> create sequence seq_test;
Sequence created
SQL> create trigger tri_test_ins
  2  before insert ON test
  3  for each row
  4  begin
  5      :new.name := 'PC' || lpad(seq_test.nextval , 4, '0');
  6  end;
  7  /
Trigger created
SQL> begin
  2      insert into test(id) values(1);
  3      insert into test(id) values(3);
  4      insert into test(id) values(6);
  5  end;
  6  /
PL/SQL procedure successfully completed
SQL> select * from test;
                                     ID NAME
--------------------------------------- ------------------------------
                                      1 PC0001
                                      3 PC0002
                                      6 PC0003
SQL> drop table test purge;
Table dropped
SQL> drop sequence seq_test;
Sequence dropped

SQL> 
谢谢你的回答,但我是想在id的前面加前缀额,就是我根据序列产生id,但我想在id前面加前缀
卖水果的net 版主 2017-04-05
  • 打赏
  • 举报
回复
看错板块了,忽略 1#,参考 2# ;
二月十六 版主 2017-04-05
  • 打赏
  • 举报
回复
CREATE TABLE #test
(
id INT IDENTITY ,
FormatId AS 'cp0001' + RTRIM(Id) ,
F1 VARCHAR(50)
)
GO
INSERT #test
( F1 )
SELECT '1'
UNION ALL
SELECT '2'


SELECT *
FROM #test

DROP TABLE #test



卖水果的net 版主 2017-04-05
  • 打赏
  • 举报
回复

SQL> 
SQL> create table test(id int, name varchar(30));
Table created
SQL> create sequence seq_test;
Sequence created
SQL> create trigger tri_test_ins
  2  before insert ON test
  3  for each row
  4  begin
  5      :new.name := 'PC' || lpad(seq_test.nextval , 4, '0');
  6  end;
  7  /
Trigger created
SQL> begin
  2      insert into test(id) values(1);
  3      insert into test(id) values(3);
  4      insert into test(id) values(6);
  5  end;
  6  /
PL/SQL procedure successfully completed
SQL> select * from test;
                                     ID NAME
--------------------------------------- ------------------------------
                                      1 PC0001
                                      3 PC0002
                                      6 PC0003
SQL> drop table test purge;
Table dropped
SQL> drop sequence seq_test;
Sequence dropped

SQL> 

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧