注册 登录
编程论坛 SQL Server论坛

关于SQL语言中where in语句的使用??

loria 发布于 2007-10-13 15:56, 3236 次点击
大家好:

我有一个字符串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
12 回复
#2
purana2007-10-13 15:59
Adodc1.RecordSource = "select * from table where 编码 in ('0010','0020','0030')"
这里你知道要加单引号.
而你
mystr=(0010,0020,0030)
没有单引号.你认为可以正确查询出来?
#3
loria2007-10-13 16:21
我定义的mystr为一字符串变量,mystr里面的字符也都强制转换成字符串了,这只是一种表述方式,说明我mystr字符串里面的内容
#4
purana2007-10-13 16:28
msgbox mystr
这样看看mystr的最终形式.
如果是'0010','0020','0030'
这样的形式,那正确
如果不是.那恭喜你.错误.
#5
loria2007-10-13 16:31
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 + " ')"

这是我的程序,请帮忙检查一下
#6
purana2007-10-13 16:32
以下是引用purana在2007-10-13 16:28:56的发言:
msgbox mystr
这样看看mystr的最终形式.
如果是'0010','0020','0030'
这样的形式,那正确
如果不是.那恭喜你.错误.

#7
loria2007-10-13 16:33
按照版主的说法加了msgbox mystr,果真不是是'0010','0020','0030',没有单引号,那应该怎么加呢?
我mystr里面的字符串是通过数组元素join过来的

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

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

#8
purana2007-10-13 16:40
自己写个程序加上单引号.
#9
loria2007-10-13 16:51

查找的资料中:

当数组是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型时,需要多一对单引号,我照第二种方式,不知为什么不能显示正确的结果?

#10
purana2007-10-13 17:02
那你去分析吧.
你现在的
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')"
这样,你认为正确?
#11
loria2007-10-13 19:30

感谢版主,终于可以了,非常非常的感谢,很是感受到这个论坛的温暖

#12
purana2007-10-13 19:33
呵呵..可以了就好呗.
#13
心中有剑2007-10-15 14:18
用charindex做吧!



"select * from table where charindex(编码 , "+ mystr + ")>0"

看这样可以不?
1