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