-
就个人而言,这似乎不是什么大问题,您只需要检查生成的语句中的最后一个字符是否是逗号,如果是,请将其删除。
示例如下:
s1 := ''+''+''+''+''+''+''+;
if s1[length(s1)]=',' thens1 := copy(s1,1,length(s1)-1);
s2 := ''+''+''+''+''+''+''+;
if s2[length(s2)]=',' thens2 := copy(s2,1,length(s2)-1);
sql := 'select '+ s1 + ''+ '从表1 a、表2 b中分组'+ s2;
顺便一提:
if then
没关系,不要使用 = true
-
我不建议你这样做,SQL 语句最好为输出组装,例如:
varstr string;
str:='select ';
组合查询的内容。
if(beginstr:=str+'';end;
str:=str+' where ';
合并查询的条件。
if(beginstr:=str+ '...'//.代表您填写字段。
end;使用 ADO 查询。
你这样写是没有问题的,而且调试起来也很方便,当然可以继续精简上面的**,就看你了!
-
用于生成 SQL 语句本身的语句没有任何问题。
参数没有默认值,通常表示数据库中没有这样的字段,我见过很多这样的问题。
自行检查数据库中是否有名称'grbh'不是您错误地复制字段名称的字段名称。
-
简单地说,如果它是一个 SQL 数据库。
Delphi 使用 AdoQuery 和 DataSource 在 AdoQuery 中编写 SQL 语句。
也就是说,无条件查询是从表中选择 *。
加号条件是从表中选择 *,其中 。条件。
-
你是什么意思? 是查询嵌套吗?
with adoquery do
beginclose;
'select * from';
下面是要追加的查询');
open;end;
-
对于 SQL 语句,它的 where 子句可以使用 n 个条件。 只要有需要。
-
有什么条件吗?
关键是SQL语句的组合!
-
根据查询页面条件组合组件的选择,对SQL语句进行拼写,然后执行拼写的SQL语句。
-
简单来说,就是使用嵌套的SQL语句进行查询。
示例:select * from (select * from table1 where field1=0) where (field2>'abc') and (field3 like '%ok%')
-
select a.序列号,a项目名称,A
塔型,a基数,一个重量,b
黑色零件加工,一个重量,b黑色零件加工为剩余黑色零件,c
转换处理,a重量 - c表1 a中作为转换余数的转换处理
左连接表 2 b 上的 a序列号 = b序列号:左联接表2 c上
序列号 = c序列号 -- “黑色处理”和“转换处理”的查询结果中是否存在空? 如果存在 null,则比较复杂,需要添加 case whan 语句和 is null 判断。
-
假设书名存储在字符串变量 bookname 中,作者存储在 author 中,出版商存储在 pub 中。
假设数据库中的这些字段都是字符串,则只需根据上述变量的值组合查询语句即可。
varsql: string;
beginsql := 'select * from your_db where 1=1';使用常数真值条件 1=1 是为了方便编写后面的组合。
if bookname <>'' then
sql := sql + '和书名=''' + bookname + '''';
if author <>'' then
sql := sql + '和 Author=''' + author + '''';
if pub <>'' then
sql := sql + '和 Publisher=''' + pub + '''';
条件组合完成后执行查询。
= sql;
end;
-
您的意思是当前表有许多字段,但根据场合,仅使用某些表字段进行维护。 是否要从任意数量的字段动态生成 SQL 语句,以便操作任意数量的字段?
我的想法:在查询所有表时。
使用 adoquery 查询 select * from table name 获取所有字段。 然后,它显示在数据网格中,用户根据自己的喜好填写查询条件。 然后,我们基于一些查询构造了SQL条件查询语句。
varwheresql:stirng;
sql:string;
beginfor i:=0 to -1 do
beignif ( unassigned) and (<'' ) then
beginsql := sql + ' and ' + '=' + quotedstr(
end;end;
wehresql := 'select * from '+表名+' where 1=1 ' + sql;
end;关于插入:
使用 AdoQuery 查询在 FROM 表名称 where 条件之后选择某些字段。
然后,将基于此查询动态插入 SQL 语句。
varsql:string;
ins:string;
runsql :stirng;
for i:=0 to do
beginsql := sql + ',';
ins:= ins + quotedstr( ',';
end;delete(sql,length(sql)-1,1);删除(ins,length(ins)-1,1); 同上。
runsql = 'insert into '+表名+'(' + sql + ') values(' + ins + ')';
这样,就可以根据查询动态推导出相应的SQL语句。
-
不管你用什么控件连接数据库,查询语句都是SQL,这没有错,但是因为表没有SQL属性,所以还是需要使用AdoQuery控件来输入查询语句。
也许可以直接用表实现,但我不会,请高指校正。
-
输入 name='tom',然后将筛选的属性值设置为 true。
您好,主号在合约期内一定要用这个**,从号可以提现,只要保留主号,对预存的返还没有影响。 因为办理4G免费组合共享需要提前存入300元**,所以可以与网络签订一年的合同,预存按月退还,下个月起每月退还25元。 合同期内,所有会员号码必须处于正常使用状态,保险号码不能停止,如果合同终止或注销欠款账户,剩余预押金将不作为违约金退还。
您好,您可以将存储过程或自定义函数用于此更复杂的查询。 这两种方法都可以使用变量和进程控制,适用于复杂的数据查询,并且有很多关于“SQL存储过程”的完整材料。