(company.id='水蜜桃' or company.name like '%水蜜桃%')
如上想做到查询 company.id 是输入的值 或者满足 company.name 包含输入的值,该怎么写?
(company.id='水蜜桃' or company.name like '%水蜜桃%')
改为:
(cast(company.id as varchar)='水蜜桃' or company.name like '%水蜜桃%')
改为:
(cast(company.id as varchar)='水蜜桃' or company.name like '%水蜜桃%')
温馨提示:答案为网友推荐,仅供参考
第1个回答 2011-07-15
不要这样做,在拼接sql时做个判断
long tmp;
string input = "水蜜桃";
if(long.TryParse(input, out tmp)){
sql += string.Format("(company.id={0} or company.name like '%{0}%')", tmp);
}else{
sql += "company.name like '%" + input.Replace("'", "''") + "%'";
}
long tmp;
string input = "水蜜桃";
if(long.TryParse(input, out tmp)){
sql += string.Format("(company.id={0} or company.name like '%{0}%')", tmp);
}else{
sql += "company.name like '%" + input.Replace("'", "''") + "%'";
}
第2个回答 2011-07-15
告诉你个简单实用的方法,你学C#的应该肯定有装VS的,在VS里连接数据库可以生成sql语句的。你可以试试非常好用,点几下鼠标就OK。
第3个回答 2011-07-16
检查一下你的字段里是否含有不可转换的文本数字,比如说中文全角数字!你可以在输入那里做判断或对键盘输入做控制或检查,以避免输入全角字符。
或者里面包含空格,这也是不可转换的,可以trim掉。
再就是字段类型是bigint,但赋的值是文本串,比如 '123' 不等于123。
或者里面包含空格,这也是不可转换的,可以trim掉。
再就是字段类型是bigint,但赋的值是文本串,比如 '123' 不等于123。