首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

[SQLServer2008R2]select * From (select * from table) 嵌套查询有关问题

2013-11-29 
[SQLServer2008R2]select * From (select * from table) 嵌套查询问题问题来源:1、用户需要一个字段来表示

[SQLServer2008R2]select * From (select * from table) 嵌套查询问题
问题来源:
   1、用户需要一个字段来表示时间,但是时间date字段(字段名:sj)内可输入2013xxxx这种非数字字符的文本信息;
   2、(带来的问题)查询时如何查询?不能用传统的date或者int类型来查询,必须先处理在查询,这就带来了我的嵌套查询问题。
             
我解决用户问题的思路:
 1、数据库字段使用varchar;
 2、在数据库中使用嵌套查询来解决

select tmp.* From (select * From table_A Where PATINDEX('[0-9]%[0-9]',sj)=1 )as tmp )
Where Convert(int,tmp.sj) > 20130101

我的报错情况:
  1、报 tmp.sj 中存在‘2013xxxx’不能将其转换为int类型;
2、查看sqlserver2008R2环境中的数据查询结果窗口,我需要的数据出来了;(虽然结果可以出来,但是我通过VS.net2008写的程序不能得到结果,而且有报错信息,个人觉得不爽,也没觉得自己写错。)
请大家帮忙看看。谢谢

还真是会出现转换2013xxxx失败的错误,真奇怪,2008是这样2000也是这样
我想只能这样转换一下了:

select * from(select case when isdate(sj)>0 then sj else '19000101' end as sj1,* from #tb where ISDATE(sj)>0)tmp
where CONVERT(int,sj1)>20130301

热点排行