我想在SQL server 2014中生成ID,它将是varchar(7)。我知道标识列,但我想要做的是创建基于表的SEQ_ID的ID。它应该以C开头,长度为7以下是一个例子: -
TABLE A
SEQ_NO NAME
1 a
12 b
30 c
401 d
所需的输出是: -
SEQ ID NAME
1 C000001 a
12 C000012 b
30 C000030 c
401 C000401 d
考虑使用复制和标识列,但这无助于我获得所需的输出。有什么想法吗?
答案 0 :(得分:2)
使用right()
select 'C'+right('000000'+convert(varchar(6),seq_no),6)
演示:
create table a (seq_no int, name varchar(16))
insert into a values
(1 ,'a') ,(12 ,'b') ,(30 ,'c') ,(401,'d')
select *
, Id = 'C'+right('000000'+convert(varchar(6),seq_no),6)
from a
rextester演示:http://rextester.com/XVQ74081
返回:
+--------+------+---------+
| seq_no | name | Id |
+--------+------+---------+
| 1 | a | C000001 |
| 12 | b | C000012 |
| 30 | c | C000030 |
| 401 | d | C000401 |
+--------+------+---------+
答案 1 :(得分:2)
您可以使用REPLICATE获取它。
SELECT SEQ_NO AS SEQ,
CONCAT('C', REPLICATE('0', 6 - LEN(SQL_NO)), CAST(SEQ_NO AS VARCHAR(10))) ID
NAME
FROM YOUR_TABLE;
答案 2 :(得分:2)
自2014年以来,另一个选项是Format()。
要清楚,Format()有一些很棒的功能,但不知道它是一个高性能。
Select 'C'+format(Seq,'000000')
返回(例如)
C000012