创建一个数值由字符和数字组成的序列[英] Creating a sequence which values are a mix of character and numbers

本文是小编为大家收集整理的关于创建一个数值由字符和数字组成的序列的处理方法,想解了创建一个数值由字符和数字组成的序列的问题怎么解决?创建一个数值由字符和数字组成的序列问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在使用 Postgres 9.1,并希望创建一个可以用作主键序列,它应该如下所示:

| entity_id_seq |
-----------------
|         X0001 |
|         X0002 |
           ....
|         X0123 |

和 nextval( 'entity_id_seq' ) 将返回 'X0124'.

任何想法如何以及是否可以使用纯 Postgres?

非常感谢!

推荐答案

这样的应该没问题:

创建序列:

CREATE SEQUENCE special_seq;

是否创建函数:

CREATE OR REPLACE FUNCTION
nextval_special()
RETURNS TEXT
LANGUAGE sql
AS
$$
    SELECT 'X'||to_char(nextval('special_seq'), 'FM0000'); 
$$;

现在检查它是否有效:

SELECT nextval_special() FROM generate_series(1,10);

 nextval_special 
-----------------
 X0001
 X0002
 X0003
 X0004
 X0005
 X0006
 X0007
 X0008
 X0009
 X0010
(10 rows)

现在你可以使用上面的函数创建表了:

CREATE TABLE test (
    id TEXT PRIMARY KEY DEFAULT nextval_special(),
    a int
);

或者只是没有函数,通过函数的简单查询:

CREATE TABLE test (
    id TEXT PRIMARY KEY DEFAULT 'X'||to_char(nextval('special_seq'), 'FM0000'),
    a int
);

本文地址:https://www.itbaoku.cn/post/1764005.html