转换和投射以创建平面视图 - 无法将 nvarchar 转换为数字



我正在创建视图以将varchar转换为数字(例如字段vw_number(和日期以转换为美国(101(样式,即mm/dd/yyyy(字段dt_view(。

视图创建良好,数据看起来不错,但是当我使用这些字段过滤数据时,它不起作用。

select * from view where vw_number = 20

引发错误:

无法将 nvarchar 转换为数字。

select * from view where dt_view >= '10/01/2019'

查询运行良好,但无法按预期工作。dt_view是表中的日期字段。

试试

select * from view where CAST(vw_number AS INT) = 20 -- cast to int
select * from view where dt_view >= '20191001' -- just to avoid locale problems

当然,如果您有非数字数据,则转换将失败。

要查找非数字,请尝试

select * from view where vm_number not like '%[^0-9]%'

最新更新