SQL Server布尔表达式评估

The*_*eek 5 sql t-sql sql-server sql-server-2005

我有一张表来存储县评估区的数据.我想添加一个计算列来告诉我该属性是否属于所有者.如果属性地址与所有者地址相同,我将"owner occupied"定义为true,否则为false.

由于来自县的源数据中的数据输入不准确,如果我进行严格的文本比较,我会得到很多虚假的非自住结果.所以我想测试"如果房产的街道名称不在所有者的地址中,或者房产的地址编号不在房主的地址中,那么这是一个非房东占用的房产"

我写了以下内容:

alter table appriasaldata add 
    IsOwnerOccupied as 
     case
        ((charindex(locastreetnumber, owneraddress) = 0) or (charindex(locastreetname, owneraddress) = 0))
        when TRUE THEN 1 ELSE 0
     end

SQL Server不喜欢CHARINDEX函数之后的=符号.我怎样才能将其重写为SQL Server可接受的?(如果重要的话,我正在使用SQL Server 2005.)

Sha*_*nce 9

表达式在SQL Server中不能返回true或false.(没有布尔类型)但是你可以移动整个表达式when:

alter table appriasaldata add 
    IsOwnerOccupied as 
     case when ((charindex(locastreetnumber, owneraddress) = 0) 
          or (charindex(locastreetname, owneraddress) = 0))
        THEN 1 ELSE 0
     end
Run Code Online (Sandbox Code Playgroud)