0

考虑下表:

雇员:

------------------------------------
empid ename  dept
------------------------------------
10    vivek  CSE
-------------------------------------

薪水:

----------------------------------------
empid     sal    city
------------------------------------
ten      30,400  hyderabad
---------------------------------------------

我想使用employee.empid(数字类型)和salary.empid(字符类型)加入这两个表。

谁能建议如何实现这一目标?

4

3 回答 3

0

首先,您应该创建一个表格来将数字转换为字符,例如 1->one 或 10->ten,即 numchar(num int , char char(10))。

 Select * from  salary s,Numchar n,employe e
    where s.empid=n.char and n.num=e.empid

组织选择列表。

于 2013-11-11T09:53:40.733 回答
0

啊。我真的不建议在您的数据库中使用英文单词而不是整数。

但如果你必须,你必须。几个选项:

  1. 我倾向于在您的薪水表中添加另一列,该表将 ID 保存为整数。您可以使用其他语言(如 Java)来填充该列。http://www.dzone.com/snippets/convert-integer-english-0。直接在 SQL 中实现相同的逻辑会很痛苦。

  2. 我真的不推荐的另一个选择是有一个查找表。最终,这最终成为一个非常大的表,只是为了解决一个糟糕的设计。该表可以称为 int_english 并且字段看起来像

    id, english
    1 , "one"
    2 , "two"

于 2013-11-11T10:01:18.293 回答
0

解决方案取决于表的大小以及您使用另一种语言或仅使用 T-SQL 进行编码的能力。

但是由于没有将英文数字转换为整数的标准函数,因此仍然需要完成创建字典或转换其中一个表的繁琐部分。

我在这里用 T-SQL 创建了一个简单的字典。 http://sqlfiddle.com/#!6/6e318/2/0

如果性能是一个问题,您需要考虑在使用之前将数据持久化到另一个表中,或者优化原始表的索引 - 这两者都是各自的主题!

如果这是一次性解决方案,那很好。如果是长期的 - 考虑更改 Salary 表的设计,使其使用整数而不是 char。

快乐编码。

于 2013-11-11T10:18:39.797 回答