Tag: sql server

在SQL中,你如何在范围内“分组”?

假设我有一个数字列表(让我们称之为“分数”)。 我想生成一个计数表,显示每个范围内出现了多less次分数。 例如: 得分范围| 发生次数 ————————————- 0-9 | 11 10-19 | 14 20-29 | 3 … | … 在这个例子中,有11行,分数在0到9之间,14行在10到19之间,而3行在20到29之间。 有没有简单的方法来设置? 你有什么build议?

SQL Server中的char,nchar,varchar和nvarchar有什么区别?

nvarchar是什么意思? SQL Server中的char , nchar , varchar和nvarchar什么区别?

函数与SQL Server中的存储过程

我一直在学习函数和存储过程很长一段时间,但我不知道为什么,什么时候应该使用函数或存储过程。 他们看起来和我一样,也许是因为我有点新手。 有人能告诉我为什么?

执行一个大的SQL脚本(使用GO命令)

我需要从C#程序中执行一大组SQL语句(创build一堆表,视图和存储过程)。 这些语句需要用GO语句分隔,但SqlCommand.ExecuteNonQuery()不喜欢GO语句。 我想我会发布的解决scheme作为参考,是分割GO行上的SQLstring,并分别执行每个批处理。 有更简单/更好的方法吗?

SQL Server中1/1/1753的意义是什么?

为什么1753? 他们对1752有什么反应? 我伟大伟大伟大伟大伟大的祖父会非常冒犯。

varchar和nvarchar SQL Server数据types之间的主要性能差异是什么?

我正在使用SQL Server 2005在我学校的一个小型Web应用程序的数据库上工作。 我在varchar和nvarchar的问题上看到了几个学派: 除非处理大量国际化数据,否则使用varchar ,然后使用nvarchar 。 只要使用nvarchar的一切。 我开始看到视图2的优点了。我知道nvarchar占用了两倍的空间,但这不一定是一笔巨大的交易,因为这只能为数百名学生存储数据。 对我来说,似乎是最简单的,不要担心它,只是允许一切使用nvarchar。 还是有什么我失踪?

连接行值T-SQL

我正在试图将一些数据汇总在一起,需要连接其中一个表的行值。 这里是基本的表结构: 评测 ReviewID ReviewDate 评审 ReviewerID ReviewID UserID 用户 UserID FName LName 这是M:M的关系。 每个评论可以有许多评论者; 每个用户可以与许多评论相关联。 基本上,我只想看到的是Review.ReviewID,Reviews.ReviewDate和该评论的所有关联用户的FName的连接string(逗号分隔)。 代替: ReviewID—ReviewDate—User 1———-12/1/2009—-Bob 1———-12/1/2009—-Joe 1———-12/1/2009—-Frank 2———-12/9/2009—-Sue 2———-12/9/2009—-Alice 显示这个: ReviewID—ReviewDate—-Users 1———-12/1/2009—–Bob, Joe, Frank 2———-12/9/2009—–Sue, Alice 我发现这篇文章描述了一些方法来做到这一点,但其中大多数似乎只处理一个表,而不是多个; 不幸的是,我的SQL-fu不够强大,不能适应我的情况。 我特别感兴趣的是使用FOR XML PATH()的那个网站上的例子,因为这看起来是最干净和最直接的。 SELECT p1.CategoryId, ( SELECT ProductName + ', ' FROM Northwind.dbo.Products p2 WHERE p2.CategoryId = p1.CategoryId ORDER BY ProductName FOR […]

计算运行总额/运行余额

我有一张桌子: create table Transactions(Tid int,amt int) 5行: insert into Transactions values(1, 100) insert into Transactions values(2, -50) insert into Transactions values(3, 100) insert into Transactions values(4, -100) insert into Transactions values(5, 200) 期望的输出: TID amt balance — —– ——- 1 100 100 2 -50 50 3 100 150 4 -100 50 5 200 250 基本上第一笔logging的余额将会与第二笔余额相同,第二笔余额将会加上以前的余额+当前的amt […]

varchar(500)通过varchar(8000)有优势吗?

我已经阅读了MSDN论坛上的这个,我还不清楚。 我认为这是正确的:Varchar(max)将被存储为文本数据types,所以有缺点。 所以,让我们说你的领域将可靠地低于8000个字符。 像我的数据库表中的BusinessName字段一样。 事实上,一个企业名称可能总是在500个字符以下(拉出一个数字)。 我似乎有很多varchar字段在8k字符数下运行。 所以我应该使该字段varchar(500),而不是varchar(8000)? 从我所了解的SQL来看,这两者之间没有任何区别。 所以,为了使生活变得简单,我想将所有的varchar字段定义为varchar(8000)。 这有什么缺点吗? 相关: varchar列的大小 (我不觉得这个回答我的问题)。

用T-SQL创build一个date

我试图将个别部分,如12,1,2007date转换为SQL Server 2005中的date时间。我已经尝试了以下: CAST(DATEPART(year, DATE)+'-'+ DATEPART(month, DATE) +'-'+ DATEPART(day, DATE) AS DATETIME) 但是这会导致错误的date。 将三个date值转换为适当的date时间格式的正确方法是什么?