Questions tagged «tsql»

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

9
使用T-SQL生成MD5哈希字符串
有没有一种方法可以在不使用fn_varbintohexstr的情况下生成varchar(32)类型的MD5哈希字符串 SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'email@dot.com')), 3, 32) 因此可以在带有SCHEMABINDING的视图内使用

16
从SQL语句中的字段中删除前导零
我正在处理从SQLServer数据库读取以生成提取文件的SQL查询。从特定字段(最简单的VARCHAR(10)字段)中删除前导零的要求之一。因此,例如,如果该字段包含“ 00001A”,则SELECT语句需要将数据返回为“ 1A”。 SQL中是否可以通过这种方式轻松删除前导零?我知道有一个RTRIM功能,但这似乎只能删除空格。
98 sql  sql-server  tsql 

6
SQL更新查询中的汇总函数?
我试图将一个表中的值设置为另一表中的值的总和。遵循以下原则: UPDATE table1 SET field1 = SUM(table2.field2) FROM table1 INNER JOIN table2 ON table1.field3 = table2.field3 GROUP BY table1.field3 当然,按照目前的情况,它将不起作用- SET不支持SUM,也不支持GROUP BY。 我应该知道这一点,但是我的脑海中一片空白。我究竟做错了什么?
98 sql  sql-server  tsql 

3
替换从左外部联接返回的默认空值
我有一个Microsoft SQL Server 2008查询,该查询使用左外部联接从三个表返回数据。很多时候,第二个和第三个表中没有数据,因此我得到一个空值,我认为这是左外部联接的默认值。有没有办法替换select语句中的默认值?我有一个解决方法,可以选择一个表变量,但感觉有点脏。 SELECT iar.Description, iai.Quantity, iai.Quantity * rpl.RegularPrice as 'Retail', iar.Compliance FROM InventoryAdjustmentReason iar LEFT OUTER JOIN InventoryAdjustmentItem iai on (iar.Id = iai.InventoryAdjustmentReasonId) LEFT OUTER JOIN Item i on (i.Id = iai.ItemId) LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo) WHERE iar.StoreUse = 'yes' 如果可能的话,我希望数量和常规价格默认为零。

9
哪个SQL查询更快?根据加入条件或Where子句过滤?
比较这两个查询。将筛选器放在连接条件或WHERE子句中是否更快。我一直觉得连接条件比较快,因为它会在最快的时候减少结果集,但是我不确定。 我将构建一些测试以供查看,但我也想就哪些内容也更易于阅读获得意见。 查询1 SELECT * FROM TableA a INNER JOIN TableXRef x ON a.ID = x.TableAID INNER JOIN TableB b ON x.TableBID = b.ID WHERE a.ID = 1 /* <-- Filter here? */ 查询2 SELECT * FROM TableA a INNER JOIN TableXRef x ON a.ID = x.TableAID AND a.ID = …

7
在数据库内任何表的任何列中搜索一个值
有没有一种方法可以char(64)在一个MS SQL Server数据库内的任何表的任何列中搜索一个值(在我的情况下,它是类型的UID )? 我坐在一个巨大的数据库前,不知道如何将表链接在一起。为了找出答案,我想列出所有表,并且在任何行中都包含某个值的列。那可能吗? 一种方法是将整个数据库转储到文本文件中,然后使用任何文本编辑器搜索值-但这将是纯粹的痛苦,如果数据库太大。
96 tsql 


8
TSQL-如何在BEGIN .. END块内使用GO?
我正在生成一个脚本,用于将更改从多个开发数据库自动迁移到暂存/生产中。基本上,它需要一堆更改脚本,并将它们合并为一个脚本,然后将每个脚本包装在一条IF whatever BEGIN ... END语句中。 但是,某些脚本需要一条GO语句,例如,SQL解析器在创建新列后就知道该列。 ALTER TABLE dbo.EMPLOYEE ADD COLUMN EMP_IS_ADMIN BIT NOT NULL GO -- Necessary, or next line will generate "Unknown column: EMP_IS_ADMIN" UPDATE dbo.EMPLOYEE SET EMP_IS_ADMIN = whatever 但是,一旦将其包装在一个IF块中: IF whatever BEGIN ALTER TABLE dbo.EMPLOYEE ADD COLUMN EMP_IS_ADMIN BIT NOT NULL GO UPDATE dbo.EMPLOYEE SET EMP_IS_ADMIN …

14
在SQL Server中获得一周的第一天
我正在尝试按周对记录进行分组,将汇总日期存储为一周的第一天。但是,我用于四舍五入的标准技术似乎无法在几周内正常工作(尽管它适用于几天,几个月,几年,季度以及我应用过的其他任何时间范围)。 这是SQL: select "start_of_week" = dateadd(week, datediff(week, 0, getdate()), 0); 返回2011-08-22 00:00:00.000,这是星期一,而不是星期日。选择@@datefirstreturn 7,这是星期日的代码,据我所知,服务器已正确设置。 通过将上面的代码更改为: select "start_of_week" = dateadd(week, datediff(week, 0, getdate()), -1); 但是,我必须作例外处理的事实使我有些不安。另外,如果这是一个重复的问题,则表示歉意。我发现了一些相关的问题,但是没有一个问题专门针对此方面。

5
如何只为列的每个唯一值选择第一行
假设我有一张客户地址表: CName | AddressLine ------------------------------- John Smith | 123 Nowheresville Jane Doe | 456 Evergreen Terrace John Smith | 999 Somewhereelse Joe Bloggs | 1 Second Ave 在表中,一个客户(例如John Smith)可以有多个地址。我需要此表的选择查询,以仅返回在“ CName”中存在重复项的情况下找到的第一行。对于此表,它应返回除第3个(或第1个-这两个地址中的任何一个都可以,但只能返回一个)之外的所有行。是否可以根据服务器是否之前已经查看过列值将关键字添加到SELECT查询中进行过滤?


4
T-SQL获取存储过程的SELECTED值
在T-SQL中,这是允许的: DECLARE @SelectedValue int SELECT @SelectedValue = MyIntField FROM MyTable WHERE MyPrimaryKeyField = 1 因此,可以获取SELECT的值并将其填充到变量中(显然,如果它是标量的)。 如果将相同的选择逻辑放入存储过程中: CREATE PROCEDURE GetMyInt AS SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = 1 我可以获取此存储过程的输出并将其填充到变量中吗? 就像是: DECLARE @SelectedValue int SELECT @SelectedValue = EXEC GetMyInt (我知道上面的语法是不允许的,因为我尝试过!)




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.