三个问题, 1。标追sql中,肯定是 “字段 is NULL” 格式判断,所以ms sql也应该支持 2. 叫法问题,把一个Relation看作Table则attribute叫列,对于一个元组,叫字段;对于relation叫attribute( 属性);实际中,这些叫法都没错。 3. 字段='' 和 字段 is NULL 的含义绝对不同,不要混淆。前者成立,则肯定不空,这两个条件整个就互斥
to wwq_jeff 如何循环判断得到一列是全空的字段名呢?。 我的这些字段是字符型的,所以null和“”对我没什么大的区别, 谢谢
to wwq_jeff 我是要得到某几个列,其中所有字段都是null,谢谢
如果你的VFP可以得到该表的所有字段,则很简单的。 (在SQL SERVER 中,select name from syscolumns where id = object_id(n'[dbo].[tablename]') strfields = "" for i = 1 to n strsql = " select " & fieldname(i) & " from tablename where " & fieldname(i) & " <> '' and (not " & fieldname(i) & " is null ) " set rs = nothing set rs = cn.execute (strsql) if rs.rowcount = 0 then strfields = iif(len(strfields)>0,strfields & "," & fieldname(i),fieldname(i)) end ifnext strsql = "select " & strfields & " from tablename " set rs = cn.execute(strsql) 注:我写的是VB代码,在VFP中需要更该一下的,但原理一样。
在 ms sql:
where 段名= null
是否只列出“为空”的字段,而不是select * ?
如果这样的话,看来你的数据库得要重新设计了,否则是很困难的。记录和字段的含义是不同的。如果是在SQL SERVER或Orcale,这个问题还是好解决,但是VFP就不行了。
基本思路是这样的:
1)循环,得到值全为空的字段名
2)将这些字段名组成一个SQL语句
3)执行这个SQL
1。标追sql中,肯定是 “字段 is NULL” 格式判断,所以ms sql也应该支持
2. 叫法问题,把一个Relation看作Table则attribute叫列,对于一个元组,叫字段;对于relation叫attribute( 属性);实际中,这些叫法都没错。
3. 字段='' 和 字段 is NULL 的含义绝对不同,不要混淆。前者成立,则肯定不空,这两个条件整个就互斥
如何循环判断得到一列是全空的字段名呢?。
我的这些字段是字符型的,所以null和“”对我没什么大的区别,
谢谢
我是要得到某几个列,其中所有字段都是null,谢谢
(在SQL SERVER 中,select name from syscolumns where id = object_id(n'[dbo].[tablename]')
strfields = ""
for i = 1 to n
strsql = " select " & fieldname(i) & " from tablename where " & fieldname(i) & " <> '' and (not " & fieldname(i) & " is null ) "
set rs = nothing
set rs = cn.execute (strsql) if rs.rowcount = 0 then
strfields = iif(len(strfields)>0,strfields & "," & fieldname(i),fieldname(i))
end ifnext
strsql = "select " & strfields & " from tablename "
set rs = cn.execute(strsql)
注:我写的是VB代码,在VFP中需要更该一下的,但原理一样。