【问题标题】:Insert an unique sequence alpha numeric field value in DB2在 DB2 中插入唯一的序列字母数字字段值
【发布时间】:2020-05-07 20:05:16
【问题描述】:

是否可以生成唯一的 2 字符值并插入到表中。该数字将从

开始
  1. 0-99
  2. 字母 A-Z
  3. 字母 AA - ZZ
  4. 可能从 A0-A9 到 Z0-Z9。

我不知道如何做到这一点,但我们需要在该字段中使用唯一的 2 值标识符。有什么建议么?

【问题讨论】:

  • 查看 base 36 转换,特别是如果您在问题中列出的顺序不是必需的。

标签: sql db2 unique sequential


【解决方案1】:

一个选项 - 没有完全编码,但我想足以理解 - 如果您需要任何类型的排序,您可能想要扩展它

WITH temp (c1) AS (
VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9'),(' '), ('A'), ('B'), ('C'), ('D'),('E'), ('F')

)
SELECT t2.c1 || t1.c1 FROM temp t1, temp t2

您可能还想查看业务需求,因为在我看来这是一种非常模仿的方法,因为唯一值是有限的

【讨论】:

  • 所以不幸的是,需要这些数据的接口也是有限的。相信我,我不想要一个有限的解决方案。
【解决方案2】:

最后,我们在 excel 中生成了值并将其上传到表中。建表的人不是我,所以很遗憾我没有使用的公式。

【讨论】:

    【解决方案3】:

    试试这个:

    WITH 
      N (I) AS (VALUES -9 UNION ALL SELECT I+1 FROM N WHERE I<26)
    , S (C) AS (SELECT CASE WHEN I<1 THEN CAST(-I AS CHAR) ELSE CHR(64+I) END FROM N)
    SELECT A.C || B.C FROM S A, S B;
    

    【讨论】:

      猜你喜欢
      • 2015-10-22
      • 1970-01-01
      • 2014-02-28
      • 2020-09-25
      • 1970-01-01
      • 2015-06-27
      • 2018-07-29
      • 2021-06-20
      • 2011-11-08
      相关资源
      最近更新 更多