sqlserver针对不同数据类型,如何等值连接查询

sqlserver中在查询过滤的时辰, 经常会碰着, 以字符串的日期值去过滤日期类型的列, 或者, 分歧数字类型的等值过滤, 好比int、decimal、money、float等等数字类型匹配 。 他们的等值毗连查询需要怎么做呢?
方式/
1建立一个姑且表, 用于演示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针对不同数据类型,如何等值连接查询

文章插图

2建立别的一个姑且表, 用于演示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)      
);

sqlserver针对不同数据类型,如何等值连接查询

文章插图

3往姑且表中插入几行测试数据, 此中某些数组在两个表固然数据类型分歧, 可是插入不异的值
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');

sqlserver针对不同数据类型,如何等值连接查询

文章插图

4查询姑且表中的测试数据
select * from #tmp1;
select * from #tmp2;

sqlserver针对不同数据类型,如何等值连接查询

文章插图

5【sqlserver针对不同数据类型,如何等值连接查询】利用INNER JOIN联系关系两张表, 查询Col2字符串列值相等的成果
select * 
from #tmp1 a
inner join #tmp2 b on b.Col1 = a.Col1
where a.Col2 = b.Col2

sqlserver针对不同数据类型,如何等值连接查询

文章插图

6利用INNER JOIN联系关系两张表, 查询int类型的数字和decimal类型数字相等的成果, sqlserver会主动进行数据类型转换匹配
select * 
from #tmp1 a
inner join #tmp2 b on b.Col1 = a.Col1
where a.Col3 = b.Col3

sqlserver针对不同数据类型,如何等值连接查询

文章插图

7利用INNER JOIN联系关系两张表, 查询detatime类型的日期与字符串类型日期相等的成果, sqlserver会主动进行数据类型转换匹配
select * 
from #tmp1 a
inner join #tmp2 b on b.Col1 = a.Col1
where a.Col4 = b.Col4

sqlserver针对不同数据类型,如何等值连接查询

文章插图


以上内容就是sqlserver针对不同数据类型, 如何等值连接查询的内容啦, 希望对你有所帮助哦!

    推荐阅读