导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

简单问题

ttyp 2003-12-08 05:19:35
表T

F1 F2
1 A
2 3
2 4
2 2
1 B


需要的结果
F1 F2
2 3
2 4

//条件就是F1=2 AND F2>=3的(F2为VARCHAR类型),中间可能有不是数字的

以下是SQL脚本:

CREATE TABLE #T (F1 VARCHAR(100),F2 VARCHAR(100))
INSERT INTO #T values('1','A')
INSERT INTO #T values('2','3')
INSERT INTO #T values('2','4')
INSERT INTO #T values('2','2')
INSERT INTO #T values('1','靠')
INSERT INTO #T values('1',null)

CREATE TABLE #T1 (F1 VARCHAR(100))

INSERT INTO #T1 values('2')

SELECT * FROM #T WHERE f1 in (select f1 from #t1) and convert(int,F2)>=3
SELECT * FROM #T
DROP TABLE #T
DROP TABLE #T1
...全文
5 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ttyp 2003-12-08
呵呵,多谢多谢,其实只要isnumeric(f2)>0先过滤就可以了

SELECT * FROM #T WHERE f1 in (select f1 from #t1)
and isnumeric(f2)>0 and convert(int,F2)>=3
原因可能是子查询或连接不做优化的
回复
j9898 2003-12-08
select * from
(SELECT * FROM #T WHERE where isnumeric(f2)=1 ) A
where
f1 in (select f1 from #t1) and convert(int,F2)>=3
回复
txlicenhe 2003-12-08
SELECT * FROM #T WHERE f1 in (select f1 from #t1) and
(case when Isnumeric(f2)>0 then convert(int,F2)>=3 end)
and isnumeric(f2)>0
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告