| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3225 人关注过本帖
标题:关于SQL语言中where in语句的使用??
只看楼主 加入收藏
loria
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-9-8
收藏
 问题点数:0 回复次数:12 
关于SQL语言中where in语句的使用??
大家好:

我有一个字符串mystr=(0010,0020,0030)等,字符串里面的元素可能会改变,但是字符串的名称mystr不变

用sQL语句查询编码包含在字符串mystr里面的行的信息,语句如下:

Adodc1.RecordSource = "select * from table where 编码 in ('0010','0020','0030')"

Adodc1.RecordSource = "select * from table where 编码 in ("+ mystr + ")"

第一条语句可以实现查询,而第二条语句未显示任何结果,in后面如果是一个字符串的话,应该是怎样的写法??

调用SQL的环境:VB
搜索更多相关主题的帖子: SQL 语句 语言 
2007-10-13 15:56
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
Adodc1.RecordSource = "select * from table where 编码 in ('0010','0020','0030')"
这里你知道要加单引号.
而你
mystr=(0010,0020,0030)
没有单引号.你认为可以正确查询出来?

我的msn: myfend@
2007-10-13 15:59
loria
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-9-8
收藏
得分:0 
我定义的mystr为一字符串变量,mystr里面的字符也都强制转换成字符串了,这只是一种表述方式,说明我mystr字符串里面的内容
2007-10-13 16:21
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
msgbox mystr
这样看看mystr的最终形式.
如果是'0010','0020','0030'
这样的形式,那正确
如果不是.那恭喜你.错误.

我的msn: myfend@
2007-10-13 16:28
loria
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-9-8
收藏
得分:0 
Dim i As Long, s() As String
ReDim s(i To Val(Outbuffer(0))) As String
For i = 0 To (Val(Outbuffer(0)) - 1)
s(i) = Trim(str(Hex(Con(Outbuffer(1 + 3 * i), Outbuffer(2 + 3 * i)))))

Dim mystr As String
If Val(Outbuffer(0)) > 0 Then
mystr = Join(s, ",")

Adodc1.RecordSource = "select 编码,故障码 from DTC where 编码 in ('" + mystr + " ')"

这是我的程序,请帮忙检查一下
2007-10-13 16:31
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
以下是引用purana在2007-10-13 16:28:56的发言:
msgbox mystr
这样看看mystr的最终形式.
如果是'0010','0020','0030'
这样的形式,那正确
如果不是.那恭喜你.错误.


我的msn: myfend@
2007-10-13 16:32
loria
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-9-8
收藏
得分:0 
按照版主的说法加了msgbox mystr,果真不是是'0010','0020','0030',没有单引号,那应该怎么加呢?
我mystr里面的字符串是通过数组元素join过来的

'" + mystr + " '这样的形式仍然没有结果显示??

[此贴子已经被作者于2007-10-13 16:39:32编辑过]

2007-10-13 16:33
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
自己写个程序加上单引号.

我的msn: myfend@
2007-10-13 16:40
loria
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-9-8
收藏
得分:0 

查找的资料中:

当数组是int型时,
string strsql ="SELECT c_c_UpTime,c_c_Position,STitle FROM SeekItem where c_id in ("+str+")";

当数组是string型时
string strsql ="SELECT c_c_UpTime,c_c_Position,STitle FROM SeekItem where c_id in (' "+str+" ')";

两者的区别就是当是string型时,需要多一对单引号,我照第二种方式,不知为什么不能显示正确的结果?

2007-10-13 16:51
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
那你去分析吧.
你现在的
mystr的最终形式是001,002,003
那ok
代入
strsql ="SELECT c_c_UpTime,c_c_Position,STitle FROM SeekItem where c_id in (' "+str+" ')"

"SELECT c_c_UpTime,c_c_Position,STitle FROM SeekItem where c_id in ('001,002,003')"
这样,你认为正确?

我的msn: myfend@
2007-10-13 17:02
快速回复:关于SQL语言中where in语句的使用??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017913 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved