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

一个简单SQL语句,相信你能行解决思路

2012-02-12 
一个简单SQL语句,相信你能行需要使用的语句如下:SELECT*FROMtable1WHEREint_MyIDin(SELECTtxt_MyTextFROMt

一个简单SQL语句,相信你能行
需要使用的语句如下:
SELECT   *   FROM   table1   WHERE   int_MyID   in   (SELECT   txt_MyText   FROM   table2   WHERE   int_MyID=1);

我做过的试验:
1、
SELECT   txt_MyText   FROM   table2   WHERE   int_MyID=1  
这个语句查询出来的结果会是   1,2   (txt_MyText字段类型是varchar)
但int_MyID字段类型是int

2、
如果执行
SELECT   *   FROM   table1   WHERE   int_MyID   in   (1,2)
则可以显示两条记录

3、
但执行
SELECT   *   FROM   table1   WHERE   int_MyID   in   ( '1,2 ')
就只显示一条记录了

可根据第一个表达式查询出来的结果确实就是如上所示,一个varchar型值

我的问题:如何将varchar型   '1,2 '   做成int型的列表   1,2

[解决办法]
select
a.*
from
table1 a,
table2 b
where
charindex( ', '+rtrim(a.int_MyID)+ ', ' , ', '+b.txt_MyText+ ', ')> 0
and
b.int_MyID=1
[解决办法]
SELECT * FROM
table1
WHERE cast(int_MyID as varchar(10)) in (SELECT txt_MyText FROM table2 WHERE int_MyID=1)
[解决办法]
--1.动态SQL
exec( 'SELECT * FROM table1 WHERE int_MyID in ( '+ '1,2 ' + ') ')

--2.换一种方式
SELECT * FROM table1 WHERE Charindex( ', '+int_MyID+ ', ', ',1,2, ')> 0
[解决办法]

SELECT txt_MyText=(case when ISNUMERIC(txt_MyText) =1 then cast(txt_MyText as int) else -1 end) FROM table2 WHERE int_MyID=1

热点排行