① 怎么用sql语句得到一个表的字段数
用一个查询打开表后,可以根据TADOQuery控件的FieldCount属性来获得字段个数。
MySql:='Select * From MyTBName ';
ADOQ_Fields.Close;
ADOQ_Fields.SQL.Clear;
ADOQ_Fields.SQL.Add(MySql);
ADOQ_Fields.Open;
SBar.Panels[2].Text:='共计:'+IntToStr(ADOQ_Fields.FieldCount)+'条字段';
如果你想得到每个字估的类型,可以对字段进行一下遍历。
放一个TValueListEditor控件,命名为VLEditor_Fields,用来存放字段信息。
VLEditor_Fields.Strings.Clear;
For i:=0 to ADOQ_Fields.FieldCount-1 DO
Begin
case ADOQ_Fields.FieldByName(ADOQ_Fields.Recordset.Fields.Item[i].Name).DataType of
ftUnknown: FieldType :='ftUnknown';
ftString: FieldType :='ftString';
ftSmallint: FieldType :='ftSmallint';
ftInteger: FieldType :='ftInteger';
ftWord: FieldType :='ftWord';
ftBoolean: FieldType :='ftBoolean';
ftFloat: FieldType :='ftFloat';
ftCurrency: FieldType :='ftCurrency';
ftBCD: FieldType :='ftBCD';
ftDate: FieldType :='ftDate';
ftTime: FieldType :='ftTime';
ftDateTime: FieldType :='ftDateTime';
ftBytes: FieldType :='ftBytes';
ftVarBytes: FieldType :='ftVarBytes';
ftAutoInc: FieldType :='ftAutoInc';
ftBlob: FieldType :='ftBlob';
ftMemo: FieldType :='ftMemo';
ftGraphic: FieldType :='ftGraphic';
ftFmtMemo: FieldType :='ftFmtMemo';
ftParadoxOle: FieldType :='ftParadoxOle';
ftDBaseOle: FieldType :='ftDBaseOle';
ftTypedBinary: FieldType :='ftTypedBinary';
ftCursor: FieldType :='ftCursor';
ftFixedChar: FieldType :='ftFixedChar';
ftWideString: FieldType :='ftWideString';
ftLargeint: FieldType :='ftLargeint';
ftADT: FieldType :='ftADT';
ftArray: FieldType :='ftArray';
ftReference: FieldType :='ftReference';
ftDataSet: FieldType :='ftDataSet';
ftOraBlob: FieldType :='ftOraBlob';
ftOraClob: FieldType :='ftOraClob';
ftVariant: FieldType :='ftVariant';
ftInterface: FieldType :='ftInterface';
ftIDispatch: FieldType :='ftIDispatch';
ftGuid: FieldType :='ftGuid';
ftTimeStamp: FieldType :='ftTimeStamp';
ftFMTBcd: FieldType :='ftFMTBcd';
else FieldType :='';
end;
VLEditor_Fields.InsertRow(ADOQ_Fields.Recordset.Fields.Item[i].Name,FieldType ,True);
End;
② 查询一个数据库表有多少字段的sql
这个要看你用的什么数据库,要用到系统表,不同的数据库系统表不一样。比如MS SQL可以这样写:
select count(*) from syscolumns where id = object_id('表名')
syscolumns 就是系统表
③ SQL怎么统计个数
不同数据库的系统表可能不一样,比如informix就是systables
的
tabname。
informix数据库:
统计个数:
select
count(*)
from
systables
where
tabname
like
'%abc%'
查看表:
select
tabname
from
systables
where
tabname
like
'%abc%'
其他数据库的话,系统表可能是sysobjects,对应的列可能也有不同,看你的情况改吧。
④ 怎么通过一个sql语句查询一个表中字段的个数
select
a.name
,count(0) 字段总数
from
sys.objects a
inner join sys.all_columns b on a.object_id=b.object_id
where
a.type='U' and a.name='表名'
group by
a.name
修改逗表名地为实际需要查询的表名即可
⑤ sql 查询怎么统计多个字段各自的个数
--所有算的地方都用cast(个数asint)
createtabletest05
(avarchar(10),
bvarchar(10),
cvarchar(10))
insertintotest05select'#','一','三'unionall
select'@','一','三'unionall
select'¥','一','二'unionall
select'%','二','二'
select*fromtest05
selectb,COUNT(b)个数fromtest05groupbyb
selectc,COUNT(c)个数fromtest05groupbyc
selectSUM(isnull(t1.个数,0)+isnull(t2.个数,0))总数,sum(isnull(t1.个数,0))个数,t1.b,sum(isnull(t2.个数,0))个数,t2.cfrom
(selectb,COUNT(b)个数fromtest05groupbyb)ast1fulljoin
(selectc,COUNT(c)个数fromtest05groupbyc)ast2ont1.b=t2.c
groupbyt1.b,t2.c
⑥ sql语句统计数量 统计一个字段出现的数量
1、创建测试表,
create table test_stu(id number, u_name varchar2(20), subject varchar2(20));
create table test_subj(id number, subject varchar2(20));
⑦ sql中怎么统计一个字段的数量
sqlserver为例
创建表及插入数据
create table 姓名表(id int,u_name varchar(10),subject varchar(10))create table 科目表(id int,s_name varchar(10))insert into 姓名表 values (1,'张三','英语')insert into 姓名表 values (2,'李四','德语')insert into 姓名表 values (3,'王五','日语')insert into 姓名表 values (4,'小明','英语')insert into 姓名表 values (5,'小狗','法语')insert into 科目表 values (1,'英语')insert into 科目表 values(2,'德语')insert into 科目表 values(3,'日语')insert into 科目表 values(4,'法语')
然后需要创建一个视图
create view v_subjectasselect a.s_name,SUM(case when a.s_name=b.subject then 1 else 0 end) countsfrom 科目表 a left join 姓名表 b on a.s_name=b.subjectgroup by a.s_name执行语句
declare @sql varchar(4000)set @sql = 'select sum(counts) as 合计'select @sql = @sql + ',sum(isnull(case [s_name] when '''+[s_name]+''' then [counts] end,0)) as ['+[s_name]+']'from (select distinct [s_name] from v_subject) as aselect @sql = @sql+' from [v_subject]'exec (@sql)结果截图
你结果里为什么会少呢?
这个主要是动态显示才这么复杂,比如你在科目表里再加个阿拉伯语,用这个也没问题,否则用case when的写法会比较有局限性
⑧ sql如何进行多个字段的统计个数
一种查询SQL如下, 利用union获得b和c各自的统计结果, 然后再一次统计整合到最终结果:
selectsum(d.b_cnt)+sum(d.c_cnt)astotal_cnt,sum(d.b_cnt)asb_cnt,case袜或whensum(d.b_cnt)=0then''elsed.valendasb_label,sum(d.c_cnt)asc_cnt,casewhensum(d.c_cnt)=0then''elsed.valendasc_labelfrom(selectbasval,count(b)asb_cnt,0asc_,0,count(c)asc_cntfromAgroupbyc)dgroup宴银byd.valSQLSerer上的测试结果(栏位次序有变化),
total_cnt为总数, b_label为b栏值, b_cnt为b栏个数, c_labe为c栏值, c_cnt为c栏个数.
这个结果跟字段是否晌好宴为整型无关, 它是统计记录出现的次数.
⑨ 如何统计SQL中某字段总数和符合某条件的数量
输入代码
select 名称
,count(*) as 总数量
,count(case when 类型='A' then 类型 else null end) as 类型为A的数
from 表名
group by 名称。
就可以统计SQL中某字段总数和符合某条件的数量。