sqlserver中在查询过滤的时辰,经常会碰着,以字符串的日期值去过滤日期类型的列,或者,分歧数字类型的等值过滤,好比int、decimal、money、float等等数字类型匹配。他们的等值毗连查询需要怎么做呢?
建立一个姑且表,用于演示sqlserver语法中的等值毗连查询
IF OBJECT_ID('tempdb..#tmp1') IS NOT NULL DROP TABLE #tmp1;
CREATE TABLE #tmp1(
Col1 varchar(50),
Col2 varchar(200),
Col3 int,
Col4 datetime
);
建立别的一个姑且表,用于演示sqlserver语法中的等值毗连查询
IF OBJECT_ID('tempdb..#tmp2') IS NOT NULL DROP TABLE #tmp2;
CREATE TABLE #tmp2(
Col1 varchar(50),
Col2 varchar(200),
Col3 decimal(18, 4),
Col4 varchar(50)
);
往姑且表中插入几行测试数据,此中某些数组在两个表固然数据类型分歧,可是插入不异的值
insert into #tmp1(Col1, Col2, Col3, Col4) values('Code1', '第1行', 1, '2019-04-25');
insert into #tmp1(Col1, Col2, Col3, Col4) values('Code10', '第2行', 10, '2019-04-26');
insert into #tmp1(Col1, Col2, Col3, Col4) values('Code100', '第3行', 100, '2019-04-27');
insert into #tmp2(Col1, Col2, Col3, Col4) values('Code1', NULL, 1, '2019-04-25');
insert into #tmp2(Col1, Col2, Col3, Col4) values('Code10', '第2行', 10, '2019-04-26');
insert into #tmp2(Col1, Col2, Col3, Col4) values('Code100', '第N行', 100, '2019-04-30');
查询姑且表中的测试数据
select * from #tmp1;
select * from #tmp2;
利用INNER JOIN联系关系两张表,查询Col2字符串列值相等的成果
select *
from #tmp1 a
inner join #tmp2 b on b.Col1 = a.Col1
where a.Col2 = b.Col2
利用INNER JOIN联系关系两张表,查询int类型的数字和decimal类型数字相等的成果,sqlserver会主动进行数据类型转换匹配
select *
from #tmp1 a
inner join #tmp2 b on b.Col1 = a.Col1
where a.Col3 = b.Col3
利用INNER JOIN联系关系两张表,查询detatime类型的日期与字符串类型日期相等的成果,sqlserver会主动进行数据类型转换匹配
select *
from #tmp1 a
inner join #tmp2 b on b.Col1 = a.Col1
where a.Col4 = b.Col4
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!