【问题标题】:Self defined field? SQL Server自定义字段? SQL 服务器
【发布时间】:2014-10-20 02:35:11
【问题描述】:

我刚刚开始使用 SQL Server,遇到了这个小问题 我的“客户”表需要一个“许可证”列,它可以自行定义其单元格,如下所示: 自动递增的数字 + "-" + "ID" 的最后 3 个数字 + 'f' if "gender"='female' 或 "m" 如果 "gender"='male' 有什么想法吗?

【问题讨论】:

标签: sql sql-server sql-server-2008-r2 sql-server-2012


【解决方案1】:

您可以为此目的使用计算列

你可以这样做 将 autoid 添加为自动更新的数字,以便可以在计算列中使用。

create table Table1
( 
  autoid int IDENTITY(1,1),
  id int,
  gender varchar(5),

  license as cast(autoid as varchar(20))+ '-' +
             cast(id%1000 as varchar(20))+ (case when gender ='female' then 'f' else 'm' end)
  )

【讨论】:

  • 好吧,现在我明白为什么不赞成投票了。这很简单,我试图只使用一列来解决它有没有办法在不添加 autoid 列的情况下解决它?
  • @minusnine,我看不到没有 autoid 的方法,因为你希望它一直递增,如果你的 ID 列已经是标识列,那么你也可以使用它
  • 我被告知确实有一种方法可以在没有 autoid 列的情况下执行此操作,但是您需要先定义一个函数,我会确定是否可以这样做加上 cast(id%1000 as varchar( 20)) 并不总是返回 ID 的最后三位 RIGHT(CAST(id AS VARCHAR(20)),3) 做得更好无论如何,感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
  • 2019-12-31
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多