我必须检查Col1的内容,其中somestring (someotherstring)
的值与Col2(somestring
部分)和Col3(someotherstring
部分)相对应。 Col2总是10个字符长。 Col1具有NULL值。
这就是我现在所拥有的:
select * from MyTable
where
substring(Col1,1,10) != Col2
OR substring(Col1,13,LEN(Col1)-13) != Col3
我收到了错误:
Invalid length parameter passed to the LEFT or SUBSTRING function.
我猜测Col1中的空值是我的问题。我已经尝试过ISNULL和COALESCE,但它仍然没有用。我一定做错了什么。我该如何解决这个问题?
答案 0 :(得分:0)
我认为您的问题是LEN(Col1) - 13
返回负数
尝试使用:
select * from MyTable
where
substring(Col1,1,10) != Col2
OR substring(Col1,13,case when LEN(Col1)-13 >= 0 then LEN(Col1)-13 else 0 end) != Col3