PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tạo một chuỗi có các giá trị là sự kết hợp của ký tự và số

Một cái gì đó như thế này sẽ ổn:

Tạo chuỗi:

CREATE SEQUENCE special_seq;

Tạo một chức năng hay không:

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

Bây giờ hãy kiểm tra xem nó có hoạt động không:

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

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

Bây giờ bạn có thể tạo bảng bằng hàm trên:

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

hoặc chỉ không có hàm với truy vấn đơn giản từ hàm:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách kết nối với máy chủ PostgreSQL từ máy ảo vagrant

  2. Không thể tạo bảng cơ sở dữ liệu có tên 'người dùng' trong PostgreSQL

  3. Ràng buộc kiểm tra PostgreSQL cho điều kiện khóa ngoại

  4. Cách được khuyến nghị nhất để lưu trữ thời gian trong PostgreSQL bằng Java là gì?

  5. PostgreSQL nơi tất cả trong mảng