我的表格中有一列,即TieBreaker只接受4位长度值。
我编写了一个SQL SEQUENCE来生成一个Series:
/ *要删除现有序列的片段* /
IF EXISTS
(
SELECT * FROM Sys.Sequences WHERE Name = 'TieBreaker'
) DROP SEQUENCE TieBreaker
GO
/ * Snippet to CREATE Sequence * /
CREATE SEQUENCE TieBreaker AS INT
START WITH 0000
INCREMENT BY 1
MINVALUE 0000
MAXVALUE 9999
CYCLE
GO
如何为我的序列输出前导0?如下:
答案 0 :(得分:2)
使用计算列进行格式化的示例
CREATE TABLE Test (
TieBreakerSeq INT DEFAULT NEXT VALUE FOR TieBreaker,
TieBreakerAsChar AS FORMAT(TieBreakerSeq, '0000#'),
SomeOtherData VARCHAR(10)
)
INSERT INTO Test (SomeOtherData) VALUES ('A'),('B'),('C')
SELECT * FROM Test
TieBreakerSeq TieBreakerAsChar SomeOtherData
------------- ---------------- -------------
0 00000 A
1 00001 B
2 00002 C
答案 1 :(得分:1)
你没有。正如我们在学校所学到的那样,一个数字没有前导零。
字符格式有。所以你有3个选择:
将字段设为varchar。这并非完全关闭,因为许多数字序列也有前缀而且不是数字。
添加另一个格式化输出的计算字段,以便您可以使用它。
不关心数据库级别,而是在任何程序使用它的格式。
答案 2 :(得分:0)
您尝试过
select lpad(TieBreaker.nextval,'4','0') from dual;
它会给出正确的结果吗?
0000
0001
0002 and so on..