如何将字符串放入WHERE 列名 IN (这里面) 在线等,标题要长。。。。。。。。。。。。。。。。。。。。。。

TireYang 2010-12-23 10:52:33
我现在要查询数据,语句是 SELECT * FROM 表 WHERE 列名 IN (范围)

前台传进来一条字符串"123,1222,333"

怎么将这字符串放到IN的条件里面?

效果:SELECT * FROM 表 WHERE 列名 IN('123','1222','33')



...全文
178 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
机器人 2010-12-23
  • 打赏
  • 举报
回复
SELECT DS_IE.CONSTR(ABBR_TRADE) INTO TRADESTRING FROM DS_IE.BDTRADE WHERE INSTR(TRADE, TRADE_MODE) > 0
TireYang 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 fangxinggood 的回复:]

引用 10 楼 yuetai000 的回复:
忘记说了,这是在Oracle里面处理的,列中数据的格式是 123,222,333,444

我有个函数,传进这个列的值得到中文信息,这个列要处理成 IN()能识别的格式

SQL code

CREATE OR REPLACE FUNCTION DS_IE.GETTRADE(TRADE IN VARCHAR2) --根……
[/Quote]
是varchar类型,instr要放在哪里?sql语句能不能写下?谢谢。
机器人 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yuetai000 的回复:]
忘记说了,这是在Oracle里面处理的,列中数据的格式是 123,222,333,444

我有个函数,传进这个列的值得到中文信息,这个列要处理成 IN()能识别的格式

SQL code

CREATE OR REPLACE FUNCTION DS_IE.GETTRADE(TRADE IN VARCHAR2) --根据贸易方式数字获取贸易方式名称
RETURN V……
[/Quote]

这一列如果是Varchar的话,考虑用 instr(TRADE, 列名)>0 的Sql语句更好,
至于中文信息的是编码转换的事。保证client端,server端编码都是 utf-8。
TireYang 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wuyq11 的回复:]

sql
command.CommandText = "delete test where CharIndex( ',' + Cast(fieldname As Varchar) + ',', ',' + @param + ',') > 0";
SqlParameter param = new SqlParameter();
param.ParameterName = "@param"……
[/Quote]
问题改了。。。我表示很抱歉,在10楼和12楼
wuyq11 2010-12-23
  • 打赏
  • 举报
回复
sql
command.CommandText = "delete test where CharIndex( ',' + Cast(fieldname As Varchar) + ',', ',' + @param + ',') > 0";
SqlParameter param = new SqlParameter();
param.ParameterName = "@param";
param.Value = "1,2,3,4,5";
command.Parameters.Add(param);
wuyq11 2010-12-23
  • 打赏
  • 举报
回复
String str = "1001,1002,1003";
str = String.Join("','",str.Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries));
str = "'" + str + "'";

TireYang 2010-12-23
  • 打赏
  • 举报
回复
刚问了,那列的值不能改变,只能取出来的时候进行处理,问题说错了,我表示非常抱歉。
mr_china 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dreamloster 的回复:]
将123,1222,333 格式成'123','1222','33'不就行了

//格式化字符串 inStr 前台传过来的字符串
string inStrFormat=string.Format("'{0}'",inStr).Replace(",","','");
//拼接SQL 语句
string sqlCommand = string.Format("SELECT * FROM ……
[/Quote] 这个方法不错
TireYang 2010-12-23
  • 打赏
  • 举报
回复
忘记说了,这是在Oracle里面处理的,列中数据的格式是 123,222,333,444

我有个函数,传进这个列的值得到中文信息,这个列要处理成 IN()能识别的格式

CREATE OR REPLACE FUNCTION DS_IE.GETTRADE(TRADE IN VARCHAR2) --根据贸易方式数字获取贸易方式名称
RETURN VARCHAR2
IS TRADESTRING VARCHAR2(400);
BEGIN
SELECT DS_IE.CONSTR(ABBR_TRADE) INTO TRADESTRING FROM DS_IE.BDTRADE WHERE TRADE_MODE IN (TRADE);
RETURN TRADESTRING;
END;


q107770540 2010-12-23
  • 打赏
  • 举报
回复

void Main()
{
string str="123,1222,333";
str=string.Join(",",str.Split(',').Select(s=>"'"+s+"'").ToArray());
string sql=string.Format("SELECT * FROM 表 WHERE 列名 IN ({0})",str);
Console.WriteLine(sql);
//SELECT * FROM 表 WHERE 列名 IN ('123','1222','333')
}

flyerwing 2010-12-23
  • 打赏
  • 举报
回复
linq什么的都成
where id in(1,2,3,4,.....)
dreamloster 2010-12-23
  • 打赏
  • 举报
回复
将123,1222,333 格式成'123','1222','33'不就行了

//格式化字符串 inStr 前台传过来的字符串
string inStrFormat=string.Format("'{0}'",inStr).Replace(",","','");
//拼接SQL 语句
string sqlCommand = string.Format("SELECT * FROM 表 WHERE 列名 IN({0})", inStrFormat);
q107770540 2010-12-23
  • 打赏
  • 举报
回复

//linq也是可以的
void Main()
{
string str="123,1222,333";
str=string.Join(",",str.Split(',').Select(s=>"'"+s+"'").ToArray());
Console.WriteLine(str);
//'123','1222','333'
}
_三皮_ 2010-12-23
  • 打赏
  • 举报
回复
string str = "123,1222,333";

string[] strdd = str.Split(',');
string sql = "SELECT * FROM 表 WHERE 列名 IN('" + strdd[0] + "','" + strdd[1] + "','" + strdd[2] + "')";
TireYang 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 q107770540 的回复:]

C# code

//方法有很多 正则也可以
void Main()
{
string str="123,1222,333";
string result="";
foreach(string s in str.Split(','))
{
result+="'"+s+"',";
}
Console.WriteLine(result.T……
[/Quote]

sql语句where 列名 IN (RESULT) 可以么?
shichao102471077 2010-12-23
  • 打赏
  • 举报
回复
截取字符串。split(‘,’)
把你的字符串截取了。
q107770540 2010-12-23
  • 打赏
  • 举报
回复

//方法有很多 正则也可以
void Main()
{
string str="123,1222,333";
string result="";
foreach(string s in str.Split(','))
{
result+="'"+s+"',";
}
Console.WriteLine(result.Trim(','));
//'123','1222','333'
}
TireYang 2010-12-23
  • 打赏
  • 举报
回复
求高人

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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