sqlserver检索,sqlserver检索出

sqlserver 如何根据条件选择要检索的列 case when

SELECT id,

创新互联是一家企业级云计算解决方案提供商,超15年IDC数据中心运营经验。主营GPU显卡服务器,站群服务器,成都电信服务器托管,海外高防服务器,大带宽服务器,动态拨号VPS,海外云手机,海外云服务器,海外服务器租用托管等。

CASE WHEN id=1 THEN firstname ELSE user END 'username'

FROM tb1

如果是查询条件要用这个就套一个

SELECT *

FROM tb1 a

WHERE username=(SELECT CASE WHEN id=1 THEN firstname ELSE user END

FROM tb1

WHERE id=a.id);

sqlserver有自带的全文检索?

有自带的全文检索,主要功能是在指定列上创建全文检索索引,然后可以基于关键字查询该列内容。

在where语句后面用CONTAINS(列名,value)这个函数就可以,没有索引的话应该就是扫描的方式执行。

sqlserver如何多张表中搜索某个数据

如果你想这样做,肯定有这样的SQL,可以写出来。

不过肯定是不建议这么做,效率肯定会很低。

要自己拼SQL。只用SQL语句也能实现不过非常麻烦。

SQL SERVER 2000 中 sysobjects 这个表记录所有的表。

syscolumns 这个表记录所有的列。

可以通过联合查询查出所有的表中的字段,然后拼SQL,进行查询。

SELECT

表名=d.name,--case when a.colorder=1 then d.name else '' end,

字段序号=a.colorder,

字段名=a.name,

标识=case when COLUMNPROPERTY( a.id,a.name,'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 = a.id AND colid=a.colid

))) then '√' else '' end,

类型=b.name,

占用字节数=a.length,

长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),

小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),

允许空=case when a.isnullable=1 then '√'else '' end,

默认值=isnull(e.text,''),

字段说明=isnull(g.[value],'')

FROM syscolumns a

left join systypes b on a.xtype=b.xusertype

inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name'dtproperties'

left join syscomments e on a.cdefault=e.id

left join sysproperties g on a.id=g.id and a.colid=g.smallid

order by a.id,a.colorder

上面这个SQL是找到的数据库中所有表和列。

然后用游标,或其他的分析出所有的表和字段 拼接SQL然后查询吧。

这样的话,估计效率不是一般的慢。

建议还是找出具体那些字段中会存在你要查询的数据的具体表和列。然后进行查询,这样效率会快些。

上面那个2000中可以用

SQL SERVER 2005和2008存储表名和列名的表不一样,表结构也不一样


分享名称:sqlserver检索,sqlserver检索出
URL标题:http://scyanting.com/article/hoegsh.html