今天使用视图查询东西,为了方便直接select * 查出来的都行全部都错乱了,看来sql 超过20个以上的字段为了效率和安全,禁止用select *

-------------查一个表的所有字段的----------------------

select 'b.' + name + ',' from syscolumns where id = object_id('T_Retire_Bill')

-------------查两个表有没有重复的----------------------

select name from syscolumns a
where id = object_id('V_Retire_All')
and not exists(
select * from syscolumns
where id = object_id('T_Retire_Bill')
and name = a.name
)

--------------------------------

case when 动态增加where 条件

仅支持08及以上版本

where 1= 1
and (
  case
    when ( @state is null or @state = '') then 1
    when StPending.StatusFlag = @state then 1 else 0
  end
)=1 create proc usp_search
@city int
as
begin
declare @sql varchar(8000)
set @sql = N'select * from TestTable where 1=1 '
if(@city <> -1)
set @sql = @sql + ' and cityId = @city '
exec sp_execute_sql @sql, N'@city int', @city
end
go create proc usp_search
@city int
as
begin
select * from TestTable where 1=1 and (@city = -1 or cityId = @city)
end
go
ALTER PROC [dbo].[ehai_SalesClueBlackList]
@CellPhone VARCHAR(11),
@CompanyName VARCHAR(50),
@IsUsed CHAR(1),
@Page INT ,
@Rows INT ,
@Sort VARCHAR(50) ,
@Order VARCHAR(20) ,
@RowCount INT OUT
AS
BEGIN
SELECT @RowCount=COUNT(*) FROM SalesClueBlackList
SELECT * FROM
(
SELECT ROW_NUMBER() OVER ( ORDER BY CellPhone DESC ) rowNum,
s.ID,s.CellPhone,s.CompanyName,s.IsUsed
FROM SalesClueBlackList S
WHERE 1 = 1
AND (CellPhone=@CellPhone OR @CellPhone='')
AND (CompanyName LIKE '%'+@CompanyName+ '%' OR @CompanyName='')
AND (IsUsed=@IsUsed OR @IsUsed='')
) as Salse
WHERE Salse.rowNum BETWEEN ( @Page - 1 ) * @Rows + 1 AND @Rows * @Page
END

-------------------------------------

SQL中取

当月天数
select day(dateadd(ms,-3,DATEADD(m, DATEDIFF(m,0,getdate())+1,0)))
当月第一天
select dateadd(d,-day(getdate())+1,getdate())
当月最后一天
select dateadd(d,-day(getdate()),dateadd(m,1,getdate()))
本年最后一天
select dateadd(d,-day(getdate()),dateadd(m,12,getdate()))
当月第一个星期一
SELECT DATEADD(wk, DATEDIFF(wk, '', DATEADD(dd, 6 - DAY(getdate()), getdate())), '')

----------------------------------------------------

SQL跨库查询。

select * from OPENDATASOURCE(
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名 insert 本地库名..表名 select * from OPENDATASOURCE(
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名 或使用联结服务器:
--创建linkServer
exec sp_addlinkedserver '别名','','SQLOLEDB','192.168.2.5' --登陆linkServer
exec sp_addlinkedsrvlogin '别名','false',null,'sa','' --查询
select * from 别名.库名.dbo.表名 --以后不再使用时删除链接服务器
exec sp_dropserver '别名','droplogins'

----------------------------------------------------------------

索引操作

创建非聚集索引:
CREATE INDEX 索引名 ON 表名(字段名); 创建聚集索引: CREATE UNIQUE CLUSTERED INDEX 索引名 ON 表名(字段名); 查询索引 查询 select index_col('表名',1,索引次序) -- 查看某個表的索引
SELECT * FROM sys.sysindexes
WHERE id=object_id('RelactionGraph') -- 查看整個庫的索引
SELECT * FROM sys.sysindexes -- 查看所有庫的索引
IF object_id('tempdb..#')IS NOT NULL
DROP TABLE #
SELECT * INTO # FROM sys.sysindexes WHERE 1=2 INSERT INTO #
EXEC sys.sp_MSforeachdb @command1='Select * from ?.sys.sysindexes'
SELECT * FROM # 还有一个更好的方法:EXEC sp_helpindex '表名'
------------------------------------------------------
 
查看LINQ生成的SQL语句
var query = from p in data.SelfAcctStatementDetails where p.AcctID == "Lingzhi" select p;
query = query.Where(o => o.AcctName == "ssss").Where(o=>o.Amount > );
System.Data.Objects.ObjectQuery<SelfAcctStatementDetail> parents = query as System.Data.Objects.ObjectQuery<SelfAcctStatementDetail>;
if (parents != null) { string sql = parents.ToTraceString(); }

---------------------------------------------------------

字符分隔

create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
--实现split功能 的函数
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'\'
insert @temp values(@SourceSql)
return
end

-----------------------------------------------------------------------

查询结果集,拼接字符串

declare @sql as varchar(8000)
select @sql=''
Select @sql=@sql+【字段名】
from 【表名】
select @sql 例1:
declare @a varchar(8000)
select @a=isnull(@a+',','')+ltrim(id) from SelfAcctOrder order by id
select @a 例2:
select stuff((select ','+[name] from tb for xml path('')),1,1,'')

sql 使用整理的更多相关文章

  1. 一个项目涉及到的50个Sql语句(整理版)

    /* 标题:一个项目涉及到的50个Sql语句(整理版) 说明:以下五十个语句都按照测试数据进行过测试,最好每次只单独运行一个语句. */ --1.学生表Student(S,Sname,Sage,Sse ...

  2. 常用sql语句整理:mysql

    ## 常用sql语句整理:mysql1. 增- 增加一张表```CREATE TABLE `table_name`(  ...  )ENGINE=InnoDB DEFAULT CHARSET=utf8 ...

  3. [转]SQL SERVER整理索引碎片测试

    SQL SERVER整理索引碎片测试 SQL SERVER整理索引的方法也就这么几种,而且老是自作聪明的加入智能判断很不爽,还是比DBMS_ADVISOR差远了: 1SQL SERVER 2000/2 ...

  4. SQL代码整理

    --SQL代码整理: create database mingzi--创建数据库go--连接符(可省略)create table biao--创建表( lieming1 int not null,-- ...

  5. Oracle数据库常用的Sql语句整理

    Oracle数据库常用的Sql语句整理 查看当前用户的缺省表空间 : select username,default_tablespace from user_users; 2.查看用户下所有的表 : ...

  6. SQL学习整理_1

    数据库是保存表和其他相关SQL结构的容器. 列是存储在表中的一块同类型数据. 行是一组能够描述某个事物的列的集合. SQL不区分大小写,但建议命令采用大写,表名采用小写,便于读写. 建立数据库 CRE ...

  7. 常用的一些SQL语句整理,也许有你想要的。

    本篇文章是对一些常用的sql语句进行了总结与分析,需要的朋友参考下,也许会有你需要的. 1.SQL行列转换 问题:假设有张学生成绩表(tb)如下:姓名 课程 分数张三 语文 74张三 数学 83张三 ...

  8. [SQL] 待整理3

    Create proc procedureName @orderId int ,@name varchar() ,@count int as begin Declare @id int declare ...

  9. sql索引碎片产生的原理 解决碎片的办法(sql碎片整理)(转)

    本文讲述了SQL SERVER中碎片产生的原理,内部碎片和外部碎片的概念.以及解决碎片的办法和填充因子.在数据库中,往往每一个对于某一方面性能增加的功能也会伴随着另一方面性能的减弱.系统的学习数据库知 ...

  10. [SQL] 函数整理(T-SQL 版)

    函数整理(T-SQL 版) 一.数学函数 1.求绝对值 ABS() 函数用来返回一个数值的绝对值. SELECT ABS(-5.38) AS absValue; 2.求指数 POWER()  函数是用 ...

随机推荐

  1. WCF 之 数据契约

    前面几篇讲的都只能传递string类型的简单参数,数据契约就是用来解决如传递一个带有多个属性的Class类型的对象的. WCF推荐使用数据契约的方式实现数据的序列化.这部分的内容很好理解但是很重要,先 ...

  2. 一次寻找IBatisNet事务bug的过程

    本文的上下文环境 操作系统:Win7 x64 Professional 开发工具:Visual Studio 2017   语言:C# 数据库ORM:IBatisNet 1.6.2 一.前言 这个项目 ...

  3. 判断IE浏览器版本的精简脚本

    IE浏览器不管是什么版本,总是跟Web标准有些不太兼容.对于代码工作者来说,自然是苦不堪言,为了考虑IE的兼容问题,不管是写 CSS 还是 JS,往往都要对 IE 特别对待,这就少不了做些判断.本文不 ...

  4. Windows、mac字体安装教程

    请问字体如何安装? Win7.8.10安装字体方法: http://jingyan.baidu.com/article/14bd256e27c517bb6c26127c.html mac安装字体方法: ...

  5. getLastSql()用法

    getLastSql()用法 $User = M("User"); // 实例化User对象 $User->find(1); echo $User->getLastSq ...

  6. setup factory 打包VB 工程

    setup factory 使用起来很简单你可以如下:1.你把你刚编译出来的exe和相关的资源文件复制到某一空目录下.把exe文件添加到setup factory里之后,在列表里右键,属性里面可以设置 ...

  7. Oracle学习(五):多表查询

    1.知识点:能够对比以下的录屏进行阅读 SQL> --等值连接 SQL> --查询员工信息: 员工号 姓名 月薪 部门名称 SQL> select empno,ename,sal,d ...

  8. 查看cache中消耗性能的语句

    sqlserver服务器内存偏高,查看下cache中sql消耗情况! /* 查询cache中的语句 说明:可以根据类型.用户数.大小查询 */ ) declare @usecounts int dec ...

  9. 【apache2】apache2查看错误日志、请求日志

    1.一般存储路径在 [ /var/log/apache2/ ]下面, 2.错误日志和请求日志 必须要进行定期清理. 清理完成后,必须重启apache  [  cd /  ;  service apac ...

  10. C#:(问题)已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭

    解决方法如下:1.不同的reader对象不要共用一个Connection对象.2.不要在while代码段内执行reader.Close();语句.否则继续执行while代码段内语句会报“阅读器关闭时尝 ...