简单问题

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
...全文
42 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧