select from --主查询
(select namea=cname from syscolumns c,sysobjects o where oid=cid and oxtype='u' and oname='tablea') a--A表中所有字段
full join --使用全连接
(select nameb=cname from syscolumns c,sysobjects o where oid=cid and oxtype='u' and oname='tableb') b--B表中所有字段
on namea=nameb where namea is null or nameb is null--只保留不同的字段
查询结果是,两表不同的字段列出,两表均有的字段不列:
NAMEA,NAMEB
FIELD1 NULL
FIELD2 NULL
NULL FIELD3
NULL FIELD4
select b[value] from syscolumns a left join sysextended_properties b on aobject_id=bmajor_id
and acolumn_id=bminor_id inner join sysobjects c on acolumn_id=cid
and a[name]='列名' and c[name]='表名'
SELECT
表名=case when acolorder=1 then dname else '' end,
表说明=case when acolorder=1 then isnull(fvalue,'') else '' end,
字段序号=acolorder,
字段名=aname,
标识=case when COLUMNPROPERTY( aid,aname,'IsIdentity')=1 then '√'else '' end,
主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (
SELECT name FROM sysindexes WHERE indid in(
SELECT indid FROM sysindexkeys WHERE id = aid AND colid=acolid
))) then '√' else '' end,
类型=bname,
占用字节数=alength,
长度=COLUMNPROPERTY(aid,aname,'PRECISION'),
小数位数=isnull(COLUMNPROPERTY(aid,aname,'Scale'),0),
允许空=case when aisnullable=1 then '√'else '' end,
默认值=isnull(etext,''),
字段说明=isnull(g[value],'')
FROM syscolumns a
left join systypes b on axusertype=bxusertype
inner join sysobjects d on aid=did and dxtype='U' and dname<>'dtproperties'
left join syscomments e on acdefault=eid
left join sysextended_properties g on aid=gmajor_id and acolid=gminor_id
left join sysextended_properties f on did=fmajor_id and fminor_id=0
--where dname='orders' --如果只查询指定表,加上此条件
order by aid,acolorder
假设你的表名tb_users,有一个admission字段(int类型)。 SqlCommand cmd = new SqlCommand("select top 1 from tb_users",new SqlConnection("xxx"));object obj = cmdExecuteScaler();if(objToString()=="1"){ }else{ }
首先该程序不可能一步达到要求的结果,原因很简单:没有相关的系统函数。
我编程实现,大概思路:
计算userid各自长度。
在userid中查找“帮助”。
删除“帮助”及帮助以后的字符。
插入到table2中。
具体实现:
--编写一个游标,从table1大量数据中一条条取出issid等于1的数据
declare @local_variant char(200)
declare cursor_name cursor for
select userid from table1 where issid='1'
open cursor_name
fetch next from cursor_name into @local_variant
--对userid进行处理
declare @location int
declare @change_data char(200)
--帮助出现的位置
set @location = select patindex("帮助",@local_variant)
--获得帮助前的数据
set @change_data = select substring(@local_variant,1,@location-1)
--第一条数据处理完成,可以插入了
insert into table2(select issid ,a,b,c from table1)AS A value(@change_data,Aissid,Aa,Ab,Ac,e)where issid = "1"
你可以用while循环补全。
name="张四,李三,五五";
sql="select from [user] where [name] in (";
string[] namearray=namesplit(',');//"&name&")
for(int i=0;i<namearraylength;i++)
{
sql+="''&namearray[i]&"'";
}
sql+=")";
这样就得到你想要的SQL语句了。
我使用的是Delphi5在Delphi自带的SQL
Explore
使用
SQL语句"select
from
syscolumns
"这条简单的语句的如果创建数据库别名时数据库类型用MSSQL,即通过Micrsosoft
SQL
Server
2000与数据库连接,这时使用SQL语句"select
from
syscolumns
"返回的结果中包括"name"字段;如果创建数据库别名时数据库类型用SQL
Server,即通过ODBC数据源与数据库连接,这时使用SQL语句"select
from
syscolumns
"返回的结果中就不包括"name"字段,好像返回的记录数倒是相同你们说奇不奇怪用'sp_pkeys
tablename'也出现类似的现象:无'COLUMN_NAME'字段!与本地数据库连接,结果也是如此!不信吗?我试过好几台机子!!!
我之所以测试用ODBC与异地数据库进行连接是由于ODBC驱动程序是windows(Win2000)系统自带的,不需要额外再用专门的Micrsosoft
SQL
Server!请楼上的各位兄弟帮忙解决!
以上就是关于sql查询表中字段全部的内容,包括:sql查询表中字段、如何在Sql2008中获取表字段属性和注释、C#如何读取SQL中的某个字段的值 并拿出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)