Questions tagged «tsql»

T-SQL(事务结构查询语言)是Sybase ASE和Microsoft SQL Server支持的SQL功能的扩展。请勿将此标签用于MySQL,PostgreSql,Oracle(Pl / SQL)相关查询。请注意,使用LINQ编写的SQL代码也不属于该标签的一部分。该标记是专门为使用Microsoft SQL Server进行高级SQL编程而创建的。


6
SQL Server:列到行
寻找优雅的(或任何)解决方案以将列转换为行。 这是一个示例:我有一个具有以下架构的表: [ID] [EntityID] [Indicator1] [Indicator2] [Indicator3] ... [Indicator150] 这是我想要得到的结果: [ID] [EntityId] [IndicatorName] [IndicatorValue] 结果值为: 1 1 'Indicator1' 'Value of Indicator 1 for entity 1' 2 1 'Indicator2' 'Value of Indicator 2 for entity 1' 3 1 'Indicator3' 'Value of Indicator 3 for entity 1' 4 2 'Indicator1' 'Value of …
128 sql  sql-server  tsql  unpivot 


4
取消透视列名称
我有一张StudentMarks有栏的桌子Name, Maths, Science, English。数据就像 Name, Maths, Science, English Tilak, 90, 40, 60 Raj, 30, 20, 10 我想像下面这样安排它: Name, Subject, Marks Tilak, Maths, 90 Tilak, Science, 40 Tilak, English, 60 使用unpivot,我可以正确获取Name,Marks,但无法将源表中的列名获取到Subject所需结果集中的列。 我该如何实现? 到目前为止,我已经到达以下查询(获取名称,商标) select Name, Marks from studentmarks Unpivot ( Marks for details in (Maths, Science, English) ) as UnPvt

10
插入到选择
使用之间有什么区别 SELECT ... INTO MyTable FROM... 和 INSERT INTO MyTable (...) SELECT ... FROM .... ? 从BOL [ INSERT,SELECT ... INTO ]中,我知道使用SELECT ... INTO将在默认文件组上创建插入表(如果尚不存在),并且该语句的日志记录取决于恢复情况数据库的模型。 哪种说法更可取? 还有其他性能影响吗? 通过INSERT INTO ...进行SELECT ... INTO的好用例是什么? 编辑:我已经说过,我知道SELECT INTO ...会创建一个不存在的表。我想知道的是SQL包含此语句是有原因的,它是什么?它是做幕后的东西不同的插入行,或者是它的顶部只是语法糖CREATE TABLE和INSERT INTO。

6
T-SQL中的SQL Server正则表达式
是否有SP用于SQL Server的以T-SQL(无CLR,无扩展的纯T-SQL)编写的正则表达式库,并且可以与共享主机一起使用? 编辑: 谢谢,我知道PATINDEX,LIKE,xp_ sps和CLR解决方案 我也知道这不是正则表达式的最佳选择,这个问题是理论上的:) 减少的功能也可以接受
127 sql-server  regex  tsql 

21
使用T-SQL查找最后一次出现的子字符串的索引
有没有一种简单的方法可以使用SQL查找字符串最后一次出现的索引?我现在正在使用SQL Server 2000。我基本上需要.NET System.String.LastIndexOf方法提供的功能。稍作谷歌搜索就发现了这个功能 - 检索上一个索引的功能 -但是如果您传递“文本”列表达式则无法使用。只要您要搜索的文本长度为1个字符,其他地方找到的其他解决方案就可以使用。 我可能必须准备一个功能。如果这样做,我会将其发布在这里,以便大家查看并使用。


10
从表中的列中删除身份
我们有一个5GB的表(近5亿行),我们想删除其中一列的identity属性,但是当我们尝试通过SSMS执行此操作时,它就会超时。 可以通过T-SQL完成吗?
127 sql  sql-server  tsql 

15
SQL存储过程中的动态排序
我过去花了数小时研究这个问题。在我看来,现代RDBMS解决方案应该解决此问题,但是到目前为止,我还没有发现任何能够真正解决我认为在任何具有数据库后端的Web或Windows应用程序中非常普遍的需求的东西。 我说的是动态排序。在我的幻想世界中,它应该像下面这样简单: ORDER BY @sortCol1, @sortCol2 这是新手SQL和存储过程开发人员在整个Internet论坛上给出的规范示例。“为什么这不可能?” 他们问。最终,总是有人总会向他们讲授存储过程的编译性质,一般的执行计划以及无法将参数直接放入ORDER BY子句的各种其他原因。 我知道你们中有些人已经在想:“那么,让客户来进行分类。” 自然,这会减轻数据库的工作量。在我们的案例中,我们的数据库服务器甚至在99%的时间内都不会汗水,甚至还不是多核的,也不是每6个月进行一次其他的系统架构改进。仅出于这个原因,让我们的数据库处理排序将不是问题。此外,数据库非常擅长分类。他们为此进行了优化,并且已经花了好几年的时间来实现它,其实现语言令人难以置信的灵活,直观和简单,最重要的是,任何初学者SQL编写者都知道如何做,更重要的是,他们知道如何进行编辑,进行更改,进行维护等。当您的数据库需要负担很多费用而您只想简化(并缩短!)开发时间时,这似乎是一个显而易见的选择。 然后是网络问题。我一直在使用JavaScript进行HTML表格的客户端排序,但是它们不可避免地不够灵活,无法满足我的需求,而且,由于我的数据库没有负担过多,并且可以非常轻松地进行排序,因此我很难证明重新编写或自己拥有JavaScript分选器所需的时间。服务器端排序通常也是如此,尽管它可能已经比JavaScript更受青睐。我不是特别喜欢DataSet开销的人,所以起诉我。 但这又回到了不可能的点,或者说不容易。对于以前的系统,我已经完成了一种获得动态排序的骇人听闻的破解方法。它不是很漂亮,也不是直观,简单或灵活的,初学者SQL编写器将在几秒钟内丢失。看起来这已经不是“解决方案”,而是“复杂性”。 以下示例无意提供任何种类的最佳实践或良好的编码风格,也不表示我作为T-SQL程序员的能力。它们就是它们的样子,我完全承认它们是令人困惑的,糟糕的形式,而且仅仅是简单的破解。 我们将一个整数值作为参数传递给存储过程(我们称该参数为“ sort”),然后从中确定一堆其他变量。例如...假设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 …

12
是NOLOCK(Sql Server提示)不好的做法吗?
我的业务是制作并非关键任务的网站和应用程序->例如。银行软件,太空飞行,重症监护监控应用程序等。您明白了。 因此,使用大量的免责声明,在某些Sql语句中使用NOLOCK提示是否不好?几年前,一位SQL管理员提出建议,如果我对“脏读”感到满意,则应该使用NOLOCK,这会给我系统带来更多的性能,因为每次读都不会锁定表/行/其他。 还告诉我,如果遇到僵局,这是一个很好的解决方案。因此,我开始遵循这种想法几年了,直到一个sql专家帮助我提供了一些随机代码,并注意到sql代码中的所有NOLOCKS。礼貌地责骂我,他试图向我解释(为什么这不是一件好事),我有点迷路了。我觉得他的解释的实质是“这是一个解决更严重问题的创可贴解决方案……特别是在您遇到僵局的情况下。因此,请解决问题的根源。 我最近对此进行了一些搜索,发现了这篇文章。 那么,请问一些sql db专家老师能启发我吗?



7
SQL Server:PIVOTing字符串数据的示例
试图找到一些简单的SQL Server PIVOT示例。我发现的大多数示例都涉及对数字进行计数或求和。我只想透视一些字符串数据。例如,我有一个查询,返回以下内容。 Action1 VIEW Action1 EDIT Action2 VIEW Action3 VIEW Action3 EDIT 我想使用PIVOT(如果可能的话)使结果如下: Action1 VIEW EDIT Action2 VIEW NULL Action3 VIEW EDIT 使用PIVOT功能甚至可能吗?
124 sql-server  tsql  pivot 

11
如何复制SQL表中的记录,但换出新行的唯一ID?
这个问题很接近我的需求,但是我的情况略有不同。源表和目标表是相同的,并且主键是唯一标识符(guid)。当我尝试这个: insert into MyTable select * from MyTable where uniqueId = @Id; 由于试图复制主键,因此我显然遇到了违反主键约束的情况。实际上,我根本不想复制主键。相反,我想创建一个新的。另外,我想选择性地复制某些字段,而将其他字段保留为空。为了使事情变得更复杂,我需要使用原始记录的主键,并将其插入副本中的另一个字段(PreviousId字段)中。 我敢肯定有一个简单的解决方案,我只是对TSQL不够了解而已。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.