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,英语
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