sql 语句,在线等

aspyaun 2009-06-06 12:32:30
province_id 上varchar(800)
province_id的值有可能是单一的,如22 有可能是多值,如2,6,8,9,22,23

也就是说当province_id=22时,就把表中所有的22,读出来

我的sql="select id,province_id from table where province_id in ("&province_id&")"

用我放在网页中用response.write sql 读出以下值
select id,province_id from table where province_id in (22,23)

我把读出值放到查询分析器查询,出错,出错的信息为
"服务器: 消息 245,级别 16,状态 1,行 2 将 varchar 值 '22,23' 转换为数据类型为 int 的列时发生语法错误。"

也就是说 province_id in ("&province_id&")" 这里的数据类型出错,如何转化
大家知道如何写这sql语句吗

...全文
44 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
aspyaun 2009-06-08
  • 打赏
  • 举报
回复
TO chinmo 朋友还在吗,如用charindex,那怎么写
是charindex和like 那个会快一点
  • 打赏
  • 举报
回复
像你这个用like不慢的
不用like,你也得会用charindex
wanggang_0717 2009-06-08
  • 打赏
  • 举报
回复
province_id字段肯定是字符串类型的

如果是字符串类型的SQL语句应该为
select id,province_id from table where province_id in ('22','23')

注意''
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 aspyaun 的回复:]
TO chinmo 朋友还在吗,如用charindex,那怎么写
是charindex和like 那个会快一点
[/Quote]
楼上不是有人给charindex的用法了吗?

cyl180555 2009-06-08
  • 打赏
  • 举报
回复
数据库里使用in和like速度差不多的 charindex和like基本一样
aspyaun 2009-06-08
  • 打赏
  • 举报
回复
TO chinmo 朋友还在吗,如用charindex,那怎么写
是charindex和like 那个会快一点
bencje 2009-06-07
  • 打赏
  • 举报
回复
楼上正解
aspyaun 2009-06-07
  • 打赏
  • 举报
回复
谢谢hookee ,和各位程序员,以上的问题已解决!
现在又出现的问题
province_id 上varchar(800) 另一个sql语句
我的sql="select id,province_id from table where province_id in ('"&province_id&"')"

province_id in ('"&province_id&"')"

province_id 这个可是是单值,也可以是多值,如单值22也 有可能是多值,如2,6,8,9,22,23

但'"&province_id&"' 是单值,这sql语句又如何写呢
aspyaun 2009-06-07
  • 打赏
  • 举报
回复
to envykok朋友,sql语句是不错,但查不出来

sql="select id,province_id from table where (province_id like '"&province_id&"' or province_id like'%,"&sprovince_id&"' or province_id like'"&sprovince_id&",%')

这个是对的,但我不想用 like ,怕语句慢,还有其它方法吗



hookee 2009-06-06
  • 打赏
  • 举报
回复

a = Split(province_id, ",")
s = ""
For i=0 To UBound(a)
s = s & " ','+province_id+',' LIKE '%," & a(i) & ",%' "
If i<>UBound(a) Then s = s & " OR "
Next

sql = "select id,province_id from table where " & s
sy_binbin 2009-06-06
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090605/08/5ab5fd9c-9c49-4dd3-b96c-2b0c3ca1cad8.html

你和这个人是一个毛病
_老吴 2009-06-06
  • 打赏
  • 举报
回复
你试试把province_id转换成int类型的呢?varchar类型的应该不能用in吧;varchar是字符类型的能用like!
sy_binbin 2009-06-06
  • 打赏
  • 举报
回复
province_id字段肯定是字符串类型的

如果是字符串类型的SQL语句应该为
select id,province_id from table where province_id in ('22','23')



稀饭小哥 2009-06-06
  • 打赏
  • 举报
回复

你要先对 province_id 处理下哦

如果只有一个的时候 province_id ="'"&province_id&"'";
有多个的时候
循环下,每个都要 加 ''

多值,如22,23
那么 sql = select id,province_id from table where province_id in ('22','23')
ACMAIN_CHM 2009-06-06
  • 打赏
  • 举报
回复

对啊,单值多值并不影响啊。
envykok 2009-06-06
  • 打赏
  • 举报
回复
多值,单值一个样,只要保证sql语句语法正确就行


select id,province_id from table where province_id in ('22','33')

select id,province_id from table where province_id in ('22')

均正确
aspyaun 2009-06-06
  • 打赏
  • 举报
回复
谢谢hookee ,和各位程序员,以上的问题已解决!
现在又出现的问题
province_id 上varchar(800) 另一个sql语句
我的sql="select id,province_id from table where province_id in ('"&province_id&"')"

province_id in ('"&province_id&"')"

province_id 这个可是是单值,也可以是多值,如单值22也 有可能是多值,如2,6,8,9,22,23

但'"&province_id&"' 是单值,这sql语句又如何写呢
sy_binbin 2009-06-06
  • 打赏
  • 举报
回复
select id,province_id from table where province_id in ('22')

这样也是可以运行的

aspyaun 2009-06-06
  • 打赏
  • 举报
回复
谢谢hookee ,和各位程序,以上的问题已解决!
现在又出现的问题
province_id 上varchar(800) 另一个sql语句
我的sql="select id,province_id from table where province_id in ('"&province_id&"')"
province_id in ('"&province_id&"')"
province_id 这个可是是单值,也可以是多值,如单值22也 有可能是多值,如2,6,8,9,22,23

但'"&province_id&"' 是单值,这sql语句又如何写呢
envykok 2009-06-06
  • 打赏
  • 举报
回复
select id,province_id from table where province_id in ('22','23')


用split 将province_id字符串转为数组

split(province_id,",")
然后对每个其中元素加'',每两个元素之间加,
然后再合成一个string

再将string 值付给province_id

最后

select id,province_id from table where province_id in ("&province_id &")"
加载更多回复(8)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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