Tsql T-SQL转换失败错误消息

Tsql T-SQL转换失败错误消息,tsql,Tsql,我得到以下错误: Conversion failed when converting the varchar value '2010-01-10' to data type int. 在Management Studio的查询窗口中运行以下命令时: SELECT * FROM ( SELECT CAST(group_id AS INT) AS qqq from view_jct_snapshot_group_items ) AS X WHERE qqq = CAST(14290 AS INT)

我得到以下错误:

Conversion failed when converting the varchar value '2010-01-10' to data type int.
在Management Studio的查询窗口中运行以下命令时:

SELECT * FROM (
SELECT CAST(group_id AS INT) AS qqq from view_jct_snapshot_group_items
) AS X
WHERE qqq = CAST(14290 AS INT)
但是,当我只运行查询的这一部分时,我会得到结果,并且没有错误:

SELECT CAST(group_id AS INT) AS qqq from view_jct_snapshot_group_items
与以下内容类似:

SELECT * FROM (
SELECT CAST(group_id AS INT) AS qqq from view_jct_snapshot_group_items
) AS X

发生了什么,如何使用where子句而不出错?

作为视图源数据的表很可能在
组id
列中具有值
'2010-01-10'
,并且该值被视图本身中的过滤器排除

视图是由查询优化程序展开的内联结构,看起来您的查询正在将强制转换推到过滤器出现之前

试一试


作为视图源数据的表很可能在
组id
列中具有值
'2010-01-10'
,并且该值被视图本身中的筛选器排除

视图是由查询优化程序展开的内联结构,看起来您的查询正在将强制转换推到过滤器出现之前

试一试

这需要能够将视图中的所有值强制转换为int。显然,至少有一个值不是int。请尝试将WHERE子句放在派生表中,而不是放在它之外

一般来说,在一个字段中存储不同数据类型的数据是不好的。这会导致编写查询时出现许多问题,并且需要您做很多本应不必要的工作(以系统范围内的性能为代价)才能将数据转换为正确的类型。就我个人而言,我会再次访问您的设计,看看为什么整数和日期存储在同一个字段中

这需要能够将视图中的所有值强制转换为int。显然,至少有一个值不是int。请尝试将WHERE子句放在派生表中,而不是放在它之外


一般来说,在一个字段中存储不同数据类型的数据是不好的。这会导致编写查询时出现许多问题,并且需要您做很多本应不必要的工作(以系统范围内的性能为代价)才能将数据转换为正确的类型。就我个人而言,我会再次访问您的设计,看看为什么整数和日期存储在同一个字段中

为什么要将
14290
转换为
int
??将
中的qqq=CAST(14290为int)
更改为
中的qqq=14290
,看看是否有效。另外,组id已经是int,对吗?我认为在你看来,问题更可能出现……你为什么要将
14290
转换为
int
??将
其中qqq=CAST(14290为int)
更改为
其中qqqq=14290
,看看这是否有效。另外,组id已经是int了,对吗?我认为在你看来,这个问题更有可能……这个答案似乎在正确的轨道上。我不确定我今天是否有机会调查,或者是否因为日程安排需要等到下周。谢谢。这个答案似乎在正确的轨道上。我不确定我今天是否有机会调查,或者是否因为日程安排需要等到下周。谢谢
SELECT *
FROM   (SELECT CAST(CASE
                      WHEN group_id NOT LIKE '%[^0-9]%' THEN group_id
                    END AS INT) AS qqq
        FROM   view_jct_snapshot_group_items) AS X
WHERE  qqq = 14290  
SELECT CAST(group_id AS INT) AS qqq from view_jct_snapshot_group_items