SQLServer关于类似于联合主键的字段查询

在一个表中,没有设置联合主键,但该表中的数据是由两个字段唯一确定的。

在tbl_name表中有key1,key2两个字段可唯一确定一条记录,现有多个数据对,查询该表中的详细数据,<key1,key2> ={(v1,v2),(v1,v3),(v4,v2)...}

查询时可用SQL '+' 运算符来进行处理

SQL Server加号[+]字符串串联运算符   加号[+]运算符是SQL Server处理字符串连接,可以将两个或多个字符串合并或串连成为一个字符串。  有一点需要注意的,SQL Server默认

情况之下,任何字符串与NULL串联也会得取NULL值的结果,如果想把NULL也当作字符串进行串联,需要把一个名为CONCAT_NULL_YIELDS_NULL选项设置为OFF

select * from tbl_name where key1+key2 in ('v1'+'v2','v1'+'v3','v4'+'v2'...)

SQLServer中 '+' 运算符若与一方为数字则会将其变成为运算+,这样会造成字符和数字混搭时运算报错,因此要统一变成字符类型进行运算,即

select * from tbl_name where convert(varchar(10),key1)+convert(varchar(10),key2) in ('v1'+'v2','v1'+'v3','v4'+'v2'...)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值