标签: t-sql

整理意味着什么?

整理在SQL中意味着什么,它的作用是什么?

mysql sql t-sql sql-server-2005

131
推荐指数
5
解决办法
12万
查看次数

如何在SQL Server中一次更改多个列

我需要ALTER表中几列的数据类型.

对于单个列,以下工作正常:

ALTER TABLE tblcommodityOHLC
ALTER COLUMN
    CC_CommodityContractID NUMERIC(18,0) 
Run Code Online (Sandbox Code Playgroud)

但是如何在一个语句中更改多个列?以下不起作用:

ALTER TABLE tblcommodityOHLC
ALTER COLUMN
    CC_CommodityContractID NUMERIC(18,0), 
    CM_CommodityID NUMERIC(18,0)
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server alter-column

127
推荐指数
5
解决办法
23万
查看次数

SQL存储过程中的动态排序

这是我过去花了几个小时研究的问题.在我看来,这应该是现代RDBMS解决方案应该解决的问题,但到目前为止,我还没有发现任何真正解决我认为在具有数据库后端的任何Web或Windows应用程序中非常普遍的需求.

我说的是动态排序.在我的幻想世界中,它应该像以下一样简单:

ORDER BY @sortCol1, @sortCol2
Run Code Online (Sandbox Code Playgroud)

这是遍布Internet 的新手SQL和存储过程开发人员给出的典型示例."为什么这不可能?" 他们问.总是有人最终会向他们讲述存储过程的编译性质,一般的执行计划,以及为什么不能将参数直接放入ORDER BY子句的各种其他原因.


我知道你们中有些人已经在想:"让客户进行排序." 当然,这会从数据库中卸载工作.然而,在我们的案例中,我们的数据库服务器甚至没有在99%的时间里出汗,它们甚至还没有多核,或者每6个月发生一次对系统架构的任何其他改进.仅仅因为这个原因,让我们的数据库处理排序不会有问题.另外,数据库非常好擅长排序.它们已针对它进行了优化,并且已经有多年时间才能做到正确,这样做的语言非常灵活,直观且简单,而且最重要的是,任何初学SQL编写者都知道如何去做,更重要的是他们知道如何编辑它,进行更改,进行维护等等.当您的数据库远非被征税而您只想简化(并缩短!)开发时间时,这似乎是一个明显的选择.

然后是网络问题.我已经使用了JavaScript来对HTML表进行客户端排序,但是它们不可避免地对我的需求不够灵活,而且,因为我的数据库没有过度征税而且可以非常容易地进行排序,我很难证明重写或滚动我自己的JavaScript分拣机所需的时间.服务器端排序通常也是如此,尽管它已经比JavaScript更受欢迎了.我不是特别喜欢DataSet的开销的人,所以起诉我.

但这又说明了这是不可能的 - 或者更确切地说,不容易.在先前的系统中,我已经完成了一种令人难以置信的黑客方式来获得动态排序.它不漂亮,不直观,简单或灵活,初学者SQL编写器会在几秒钟内丢失.这已经不仅仅是一个"解决方案",而是一个"复杂化".


以下示例并不意味着公开任何类型的最佳实践或良好的编码风格或任何内容,也不表示我作为T-SQL程序员的能力.他们就是这样,我完全承认他们是混乱,糟糕的形式,只是简单的黑客.

我们将一个整数值作为参数传递给存储过程(让我们调用参数只是"排序"),然后从中确定一堆其他变量.例如......让我们说sort是1(或默认值):

DECLARE @sortCol1 AS varchar(20)
DECLARE @sortCol2 AS varchar(20)
DECLARE @dir1 AS varchar(20)
DECLARE @dir2 AS varchar(20)
DECLARE @col1 AS varchar(20)
DECLARE @col2 AS varchar(20)

SET @col1 = 'storagedatetime';
SET @col2 = 'vehicleid';

IF @sort = 1                -- Default sort.
BEGIN
    SET @sortCol1 = @col1;
    SET @dir1 = 'asc';
    SET @sortCol2 = @col2; …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sorting stored-procedures

126
推荐指数
6
解决办法
6万
查看次数

拆分功能相当于T-SQL?

我想把'1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 ......'(逗号分隔)拆分成表或表变量.

有没有人有一个函数可以连续返回每一个?

sql t-sql sql-server sql-server-2008

126
推荐指数
6
解决办法
23万
查看次数

在SqlCommand中传递数组参数

我试图将数组参数传递给C#中的SQL commnd,如下所示,但它不起作用.有没有人见过它?

string sqlCommand = "SELECT * from TableA WHERE Age IN (@Age)";
SqlConnection sqlCon = new SqlConnection(connectString);
SqlCommand sqlComm = new SqlCommand();
sqlComm.Connection = sqlCon;
sqlComm.CommandType = System.Data.CommandType.Text;
sqlComm.CommandText = sqlCommand;
sqlComm.CommandTimeout = 300;
sqlComm.Parameters.Add("@Age", SqlDbType.NVarChar);
StringBuilder sb = new StringBuilder();
foreach (ListItem item in ddlAge.Items)
{
     if (item.Selected)
     {
         sb.Append(item.Text + ",");
     }
}

sqlComm.Parameters["@Age"].Value = sb.ToString().TrimEnd(',');
Run Code Online (Sandbox Code Playgroud)

c# t-sql

126
推荐指数
7
解决办法
12万
查看次数

125
推荐指数
4
解决办法
22万
查看次数

定义要与IN运算符一起使用的变量(T-SQL)

我有一个使用IN运算符的Transact-SQL查询.像这样的东西:

select * from myTable where myColumn in (1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

有没有办法定义一个变量来保存整个列表"(1,2,3,4)"?我该如何定义它?

declare @myList {data type}
set @myList = (1,2,3,4)
select * from myTable where myColumn in @myList
Run Code Online (Sandbox Code Playgroud)

sql t-sql

125
推荐指数
9
解决办法
18万
查看次数

124
推荐指数
4
解决办法
11万
查看次数

SQL Server:PIVOTing字符串数据的示例

试图找到一些简单的SQL Server PIVOT示例.我发现的大多数例子都涉及计算或总结数字.我只想转动一些字符串数据.例如,我有一个返回以下内容的查询.

Action1 VIEW  
Action1 EDIT  
Action2 VIEW  
Action3 VIEW  
Action3 EDIT  
Run Code Online (Sandbox Code Playgroud)

我想使用PIVOT(如果可能的话)来产生如下结果:

Action1 VIEW EDIT  
Action2 VIEW NULL  
Action3 VIEW EDIT  
Run Code Online (Sandbox Code Playgroud)

PIVOT功能可以实现这一点吗?

t-sql sql-server pivot

123
推荐指数
6
解决办法
19万
查看次数

WITH CHECK ADD CONSTRAINT后跟CHECK CONSTRAINT与ADD CONSTRAINT

我正在查看SQL Server 2008的AdventureWorks示例数据库,我在他们的创建脚本中看到他们倾向于使用以下内容:

ALTER TABLE [Production].[ProductCostHistory] WITH CHECK ADD 
CONSTRAINT [FK_ProductCostHistory_Product_ProductID] FOREIGN KEY([ProductID])
  REFERENCES [Production].[Product] ([ProductID])
GO
Run Code Online (Sandbox Code Playgroud)

紧接着是:

ALTER TABLE [Production].[ProductCostHistory] CHECK CONSTRAINT     
[FK_ProductCostHistory_Product_ProductID]
GO
Run Code Online (Sandbox Code Playgroud)

我看到这个用于外键(如此处),唯一约束和常规CHECK约束; DEFAULT约束使用我更熟悉的常规格式,例如:

ALTER TABLE [Production].[ProductCostHistory] ADD  CONSTRAINT  
[DF_ProductCostHistory_ModifiedDate]  DEFAULT (getdate()) FOR [ModifiedDate]
GO
Run Code Online (Sandbox Code Playgroud)

如果有的话,第一种方式与第二种方式之间有什么区别?

sql t-sql sql-server check-constraints

123
推荐指数
7
解决办法
11万
查看次数