【问题标题】:Is it possible to insert multiple names in same cell?是否可以在同一个单元格中插入多个名称?
【发布时间】:2013-07-11 18:11:36
【问题描述】:

我有一个存储过程,当她在表单上更新她的姓氏后,它将获取一个人的姓氏并将其插入到 别名 下。但是我的老板希望每次有人更改她的名字时保留所有以前的姓氏。我在 SQL 表中有以下数据。

+----------------+---------------+----------------+------------------+
     PeopleID         FirstName       LastName            Alias
+-----------------+--------------+----------------+------------------+
     002112             Judy            Smith              Hall

假设,朱迪又把她的姓改成了金斯利。是否可以获取她以前的姓氏 Smith 并将其插入到 Hall 后面的 Alias 下?我在想它可能看起来像这张桌子,但不知道怎么做。

+----------------+---------------+----------------+------------------+
     PeopleID         FirstName       LastName            Alias
+-----------------+--------------+----------------+------------------+
     002112             Judy          Kingsley         Hall, Smith

【问题讨论】:

  • 您使用的是什么 SQL 服务器? PostgreSQL、MySQL 还是其他?
  • @AnthonyAtkinson:我使用的是 SQL Server 2008。
  • 如果你想使用规范化,你可以创建一个名为 Alias 的全新表,并有两列:PeopleID 和 Alias - 我想你可以看到我的目标。这将允许您在不修改原始表的情况下拥有尽可能多的别名。我没有发布作为答案,因为我并不是真正的规范化专家,所以除了这个描述之外我无能为力。祝你好运。
  • @RickyMutschlechner:谢谢 Ricky,我明白你的意思了。

标签: sql sql-server-2008 database-design


【解决方案1】:

我建议您在表中保存当前值并创建一个历史表来保存以前的姓氏。像这样:

CREATE TABLE last_name_history
(
   PeopleID char(6),
   from_date datetime,
   to_date datetime,
   alias char(25)
) 

【讨论】:

  • 感谢法比恩!这是个好主意。
【解决方案2】:

检索字符串数组中的所有值。然后将所有别名保存在一个用逗号分隔的字符串中。让我们说“别名”是一个字符串数组,其中存储了不同的别名。现在,做这样的事情将它存储在一个字符串中-

for(int i=0;i<alias.length;i++)
    {
                String str="";
        if(i==0)
    str+=alias[i];
        else
            str+=","+alias[i];
    }

然后将字符串“str”存储在“别名”列中。

【讨论】:

  • 我不熟悉使用数组。我将在哪里实施您的代码?
  • 您不能在 SQL 查询中执行此操作,对吗?如果是这样,我将删除我的反对票。这在我看来就像 Java。
  • 是的,它是 java.. 我想,jdbc 是在这里实现的。我的错。
猜你喜欢
  • 1970-01-01
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2013-09-29
  • 2018-01-12
相关资源
最近更新 更多