Sql 如何在字符类型列和数字类型列之间形成联接?

Sql 如何在字符类型列和数字类型列之间形成联接?,sql,Sql,考虑下表: 雇员: ------------------------------------ empid ename dept ------------------------------------ 10 vivek CSE ------------------------------------- 薪金: ---------------------------------------- empid sal city -------------------------

考虑下表:

雇员:

------------------------------------
empid ename  dept
------------------------------------
10    vivek  CSE
-------------------------------------
薪金:

----------------------------------------
empid     sal    city
------------------------------------
ten      30,400  hyderabad
---------------------------------------------
我想使用
employee.empid
(数字类型)和
salary.empid
(字符类型)连接这两个表


有人能建议如何实现这一点吗?

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


组织选择列表。

Ugh。我真的不建议在数据库中使用英语单词而不是int

但是如果你必须,你必须。有几种选择:

  • 我倾向于在您的工资表中添加另一列,该列将ID保存为int。您可以使用另一种语言(如Java)来填充该列。直接在SQL中实现同样的逻辑将是一件痛苦的事情

  • 另一个我真的不推荐的选择是有一个查找表。最终,这最终成为一个非常大的桌子,只是为了解决一个糟糕的设计。该表可以称为int_english,字段如下所示

    id,英语

    1,“一个”

    2,“两个”


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

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

    我在这里用T-SQL创建了一个简单的字典。

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

    如果这是一次性的解决方案,那就没问题了。如果是长期的-考虑改变工资表的设计,使它使用整数而不是字符。
    愉快的编码。

    请先阅读有关SQljoins的内容。您可以轻松完成此任务。以下内容可能会帮助您学习joins的概念和非常糟糕的做法。会消耗太多的时间。如果您有一个包含大量条目的表,那么您甚至无法想象它需要多少时间。第二,我不确定这是否可行。您使用的是哪种数据库管理系统?博士后?Oracle?…\u为什么
    Salary.empid
    是这样存储的?这首先是什么原因?
     Select * from  salary s,Numchar n,employe e
        where s.empid=n.char and n.num=e.empid