例如n表里面字段a和b里面的数据分别是10和*10-10
那如何查询出小于100的记录出来以下是错误的写法:
select * from n where a,b<100
那如何查询出小于100的记录出来以下是错误的写法:
select * from n where a,b<100
解决方案 »
- .net打包问题
- 读文本文件的问题
- 新手 求助(为什么用外连接 执行的select 语句 返回的结果 在用SqlDataReader.read()控制循环时出现错误)
- C#.net retmoing问题
- 我想用ADO.net 访问数据库, 为了性能用非托管作界面,用什么? VS2008要用ADO.net+非托管界面, 必须都要托管 用Delphi,非托管界面,必
- 昨天登记,今天散分
- 感谢天外来客的帮助请进来领分.
- 现在哪种软件的市场前景比较好?
- 没有.net环境,我能不能写c#程序,编译,运行?? .net新手求教??
- C# 获取QQ群号
- 不得不问一个ZedGraph的问题了
- C#如何实现xml的查找与替换
select * from n where a<100 and b <100
a=10
b=*10-10要a和b要连接起来再计算小于100
SELECT * FROM TABLE WHERE cast( substring(b,1,2) as int )* cast( substring(b,5,2) as int )<100
SELECT * FROM TABLE WHERE cast( substring(b,2,2) as int )* cast( substring(b,5,2) as int )<100
SELECT * FROM n WHERE a*cast( substring(b,2,2) as int )- cast( substring(b,5,2) as int ) <100
经过验证可行
b的公式不是固定的,有可能b="+20*2-3"之类的公式
那么就会是
a="5"
b="+20*2-3"sql语句就是
select * from n where 这里就是用a和b连接出来计算出的结果(5+20*2-3=42)<100
(a nvarchar(20),b nvarchar(20))insert into @t1 values('10','*10-11')select substring(b,2,CHARINDEX('-', b)-CHARINDEX('*', b)-1),
substring(b,CHARINDEX('-', b)+1,len(b)-CHARINDEX('-', b))
from @t1select *,
(convert(int,a)*convert(int,substring(b,2,CHARINDEX('-', b)-CHARINDEX('*', b)-1))-convert(int,substring(b,CHARINDEX('-', b)+1,len(b)-CHARINDEX('-', b)))) '结果'
from @t1
where (convert(int,a)*convert(int,substring(b,2,CHARINDEX('-', b)-CHARINDEX('*', b)-1))-convert(int,substring(b,CHARINDEX('-', b)+1,len(b)-CHARINDEX('-', b))))<100
算出结果,然后判断是否小于100
然后再判断要不要去执行sql语句
组建sql语句都免了
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;namespace WindowsApplication56
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); String a = "10";
String b = "*10-10"; using (SqlConnection Connection = new SqlConnection(".."))
{
String C = a + b; Connection.Open();
SqlCommand Command = new SqlCommand("SELECT * FROM N WHERE "+C+"<100");
Command.ExecuteNonQuery();
}
}
}
}
@Expression varchar(8000)
,@result int out
as
declare @sql nvarchar(4000)
set @sql = N'set @result = ' + @Expression
exec SP_EXECUTESQL @sql ,N'@result int out', @result out
select @resultdeclare @x int
exec sp_CalcExpression '10*10-11', @x out
select @x
System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex(@"[=+-/^\*\!]");
System.Text.RegularExpressions.MatchCollection matches = re.Matches(a);//取出运算符集合
foreach (System.Text.RegularExpressions.Match ma in matches)
{
string v=ma.Value;//循环取出运算符
}
string[] expr = re.Split(a);//取出由运算符分隔的数字集合{10,10,11}剩下的就是循环组合了。。
1、先定义一个自定义函数UDF(a,b),返回值为字符串连接后形成的公式的值(拼接SQL语句,使用Exec执行);
2、使用SQL语句:
Select * from n where UDF(a,b) < 100