我有以下问题:我有一个 SQL 表,它在一列中包含文本和数字。我创建了两个视图来处理文本和数字。
如果我选择整个视图,它们会按预期工作,但是如果我在 select 语句中添加 where 语句,则会收到以下错误:
Conversion failed when converting the varchar value 'Thomas' to data type int.
我可以以某种方式告诉服务器在外部选择之前申请内部视图的 where 语句吗?
请使用以下 SQL 代码重现错误:
create schema tst
go
create table tst.tbl(strValue varchar(10))
insert tst.tbl(strValue)
values ('Thomas'), ('1991'), ('Reto'), ('21'), ('Strub')
go
create view tst.tblStr as
select strValue
from tst.tbl
where isnumeric(strValue)=0
go
create view tst.tblInt as
select cast(strValue as int) intValue
from tst.tbl
where isnumeric(strValue)=1
go
select * from tst.tblStr order by strValue --ok
select * from tst.tblInt order by intValue --ok
go
select * from tst.tblInt where intValue<100 --not ok
go
select * from tst.tbl where isnumeric(strValue)=1 and cast(strValue as int) < 100 --ok
go
drop view tst.tblInt
drop view tst.tblStr
drop table tst.tbl
drop schema tst