我有2个表,其中包含firstname,surname,dob。 第一个表的数据类型为所有列的varchar,第二个表是varchar(50),varchar(50),datetime数据类型。
Ex:
1st table
fname surname dob
a b 04/12/1948
a b 05/08/1984
2nd table
fname surname dob
a b 05/08/1984
a b 04/12/1948
当我做Intersect时不匹配装饰(可能是数据类型的b'ze) 除了给我结果。
有没有办法从表1中选择表2中匹配记录的所有记录。
任何帮助都非常赞赏
答案 0 :(得分:1)
SELECT fname, surname, CAST(dob AS DATETIME) AS dob FROM table1
INTERSECT
SELECT fname, surname, dob FROM table2
答案 1 :(得分:1)
EXCEPT 和 INTERSECT 工作:
Declare @tblA AS TABLE(
FirstName VARCHAR(50),
SurName VARCHAR(50),
Dob VARCHAR(50)
)
Declare @tblB AS TABLE(
FirstName VARCHAR(50),
SurName VARCHAR(50),
Dob Date
)
INSERT INTO @tblA VALUES
('a','b','04/12/1948'),
('a','b','05/08/1948')
INSERT INTO @tblB VALUES
('a','b','04/12/1948'),
('a','b','05/09/1948')
SELECT
*
FROM @tblA
INTERSECT
SELECT
*
FROM @tblB
SELECT
*
FROM @tblA
EXCEPT
SELECT
*
FROM @tblB
<强>输出:强>
答案 2 :(得分:1)
使用此查询。
Select * from table1 as a
Inner join table2 as b
on a.fname = b.fname and a.surname = b.surname and cast(a.dob as date)=b.dob
答案 3 :(得分:1)
SELECT * FROM #Table1 JOIN #Table2 ON #Table2.dob = CONVERT(DATETIME,#Table1.dob,101)