| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3267 人关注过本帖
标题:sql 语句太长,可用分号;来分段,哪在输入分号(;)前要不要先空一格再输入 ...
取消只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:5 
sql 语句太长,可用分号;来分段,哪在输入分号(;)前要不要先空一格再输入分号还是不要空格直接输入分号?
第一种先空格再输入分号;
SELECT , TAlias2.order_date, TAlias2.shipped_on ;
   FROM customer TAlias1, orders TAlias2 ;
   WHERE TAlias1.cust_id = TAlias2.cust_id ;
   AND TAlias2.order_date < {^1994-02-16}


第二种没有空格直接输入分号;
SELECT , TAlias2.order_date, TAlias2.shipped_on;
   FROM customer TAlias1, orders TAlias2;
   WHERE TAlias1.cust_id = TAlias2.cust_id;
   AND TAlias2.order_date < {^1994-02-16}
我试了二种情况,代码能运行,哪一种规范?
2014-09-21 15:49
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 

但在[新手必看 SELECT--SQL语法 别乱提问了,先看看]一文中例子:
, 如下例所示:

SELECT , orders.order_id, orders.emp_id ;
FROM customer, orders ;
WHERE customer.cust_id = orders.cust_id ;
UNION ;
SELECT , 0, 0 ;
FROM customer ;
WHERE customer.cust_id NOT IN ;
(SELECT orders.cust_id FROM orders)
注意 确信在每一个分号前包括一个空格。否则, Visual FoxPro 产生一个错误。

[新手必看 SELECT--SQL语法 别乱提问了,先看看]:https://bbs.bccn.net/thread-82256-1-1.html
2014-09-21 16:33
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用TonyDeng在2014-9-21 20:38:57的发言:

明白解释器或编译器是怎么处理这种换行的就知道答案。
能具体说一下好吗?深奥了。
2014-09-22 09:12
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用taifu945在2014-9-21 20:56:16的发言:

那是因为他这个例子的书写不规范,每行的开头都顶格写的。所以,分号前不加空格的话,相当于每行的第一个字母会贴住上一行的最后一个字母,造成VFP不能识别,从而出错。而你在一楼给的例子书写规范,每行前面都用了缩进的方法让命令中的各子句关系清晰明了。同时,每行前的空格也起到了分隔的作用,因此,对于你的代码来说,分号前加不加空格是一样的。顺便说一句,我也是这样写代码的,所以从不理会分号前的空格。
有道理,懂了,谢了。
2014-09-22 09:13
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用TonyDeng在2014-9-23 10:48:07的发言:

命令的长度是有限的,真以为靠换行可以解决问题么?
TonyDeng班主:您扯远了
2014-09-23 15:49
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用liuxingang28在2014-9-24 13:00:58的发言:

对于 SQL 语句的续行符来说,并不能随心所欲地在语句的任意位置断行,要注意以下几点:

1. 不能将关键字拆分成多行。

下列命令将“from”拆分成了两行,这种用法是错误的:

select * fro;
m 工资表

2. 不能将变量拆分成多行。

下列命令将变量“cLastName”拆分成了两行,运行出错:

select * from;
工资表;
where 姓名=cLast;
Name

3. 不能将一个字符串常数直接拆分成两行。(数值型、日期型、逻辑型等常数更不能拆分)

错误用法:
select * from 工资表 where 姓名="老;
刘"

正确用法:
select * from 工资表 where 姓名="老"+;
"刘"

4. 只要命令中的关键字、变量等书写完整,在分号前加不加空格均可。

以下三条命令均可正确运行:

select * from;
工资表

select * from ;
工资表

select * from;
    工资表
例子不错,说明问题。
2014-09-24 15:12
快速回复:sql 语句太长,可用分号;来分段,哪在输入分号(;)前要不要先空一格 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032104 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved