这样的SQL语句怎么写?(50分)

  • 主题发起人 主题发起人 smilboy
  • 开始时间 开始时间
S

smilboy

Unregistered / Unconfirmed
GUEST, unregistred user!
我要写一个多条件查询的语句
SELECT * FROM USER WHERE )NAME='ABC' OR SEX='女' )AND AGE<='12'
就是这个意思
可是不行
请指教
 
如果AGE字段如果是整形,如下:
SELECT * FROM USER WHERE NAME='ABC' OR SEX='女' AND AGE<='12'
就行了;
如果是字符型,"AGE<='12'"是不对

 
AGE字段可能是integer;
你的语句在Query控件中应该是:
Query.Close;
Query.Sql.Clear;
Query.Sql.Add('SELECT * FROM USER WHERE (NAME='''+Name.text+''' OR
SEX='''+Sex.text+''' )AND AGE<='+Age.text+')
你的出错之处可能是没有注意Age是integer而不是char;
运行时那条语句应该是:
SELECT * FROM USER WHERE (Name='ABC' OR SEX='女' )AND AGE<=12
 
再添一句:
我上面假设参数都从Edit中取
 
对不起,笔误
SELECT * FROM USER WHERE NAME='ABC' OR SEX='女' AND AGE<=12
 
SELECT * FROM USER WHERE (NAME="ABC" OR SEX="女") AND AGE<=12
 
你真的要将“NAME='ABC' OR SEX='女'”用括号括起来,那以何必
世上没用不在这两个条件的人吧。 如果有那你也会不知道。
不过你可以写成
select * form user where ((name='abc' or sex='女') and age<=12)
如果你的 age 字段为符可以用
select * form user where ((name='abc' or sex='女') and age<='12')
 
我的意思是查找:姓名是'abc'或者性别是女,不过年龄都必须小于12
我是指条件的OR,AND的问题
 
select * form user where ((name='abc' or sex='女') and age<=12)

行, 可以
我已经试过
 
(name='abc' and age<12) or (sex='女' and age<12)
 
with query do
begin
Close;
Sql.Clear;
Sql.Add('SELECT * FROM USER');
Sql.Add('WHERE (NAME=:NA OR SEX=:SE) AND AGE<=:AG');
ParamByName('NA').AsString := '张三';
ParamByName('SE').AsString := '女';
ParamByName('AGE').AsInteger := 12;//值可以取自Edit
Open;
end;
 
字符串型的可以直接写入sql中,数字好象必须用参数进行传递。
 
在程序中应该这么写:
query1.close;
query1.sql.text:='select * from USER WHERE (NAME=''ABC'' OR SEX=''女'' )AND AGE<=12';
//或者写成query1.sql.text:='select * from USER WHERE (NAME="ABC" OR SEX="女" )AND AGE<=12';
query1.open;

对于字符串型的字段,在SQL语句中其值得两端必须加上引号(单引号或双引号),加单引号的时候必须多加一个单引号作为转义符,类似C++中的//
对于数值类型的字段就不用加引号了。
GOOD LUCK!
 
问xueminliu
AGE<='+Age.text+'
为什么要在Age.text前后加 + ?
 
多人接受答案了。
 
后退
顶部