日期:2014-05-17  浏览次数:20715 次

如何把查询的某个表的相关字段做一个值查询出来?
有这样一个需求:
我要删除一个监测点编号如101.之前需要查询这个测点是否被其它的关系表中所使用个,如果使用则不允许删除。
表A 
 id     测点1    测点2    测点3    测点4  测点5  ...测点10   时间
 1       103      204      101     201     104   ....        2013-8-8 10:0:0
 ..      ...      ...      ....    ...     ..     ....

此时我根据条件查询 表A中 id=1记录符合条件(第一条),然后如何将测点1-10所有列的值是否有101的测点,如果有则不允许删除。 如果采用对应的测点如测点3有NULL的情况 怎么判断?

如何判断??? 除了一个一个列 比较的办法?


------解决方案--------------------
if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (id int,测点1 int,测点2 int,测点3 int,测点4 int,测点5 int,时间 datetime)
insert into [TB]
select 1,103,204,101,201,101,'2013-8-8 10:0:0'

select * from [TB]


SELECT  CASE WHEN LEN(CONVERT(VARCHAR, 测点1) + CONVERT(VARCHAR, 测点2)
            + CONVERT(VARCHAR, 测点3) + CONVERT(VARCHAR, 测点4)
            + CONVERT(VARCHAR, 测点5)) - LEN(REPLACE(CONVERT(VARCHAR, 测点1)
                                                   + CONVERT(VARCHAR, 测点2)
                                                   + CONVERT(VARCHAR, 测点3)