Questions tagged «tsql»

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


4
是否总是首选varchar(MAX)?
关于SQL Server,我了解: var 表示内存是延迟分配的,这意味着它完全适合(插入时)数据。 MAX 表示没有大小限制\限制。 那么,在使用MAX时,是否总是最好使用varchar,因为我们无论如何都不分配整个大小? 我们是否应该仅在要在此数据库列上强制执行约束的情况下才使用恒定大小?
74 sql  sql-server  tsql 

5
对选择中的每一行执行插入操作?
我有许多记录需要插入多个表中。每隔一列将是一个常量。 下面的伪代码不好-这是我想做的: create table #temp_buildings ( building_id varchar(20) ) insert into #temp_buildings (building_id) VALUES ('11070') insert into #temp_buildings (building_id) VALUES ('11071') insert into #temp_buildings (building_id) VALUES ('20570') insert into #temp_buildings (building_id) VALUES ('21570') insert into #temp_buildings (building_id) VALUES ('22570') insert into property.portfolio_property_xref ( portfolio_id , building_id , created_date , last_modified_date …

6
如果指定了SELECT DISTINCT,则ORDER BY项目必须出现在选择列表中
我将选择列表中的列添加到按列表排序,但是它仍然给我错误: 如果指定了SELECT DISTINCT,则ORDER BY项目必须出现在选择列表中。 这是存储的过程: CREATE PROCEDURE [dbo].[GetRadioServiceCodesINGroup] @RadioServiceGroup nvarchar(1000) = NULL AS BEGIN SET NOCOUNT ON; SELECT DISTINCT rsc.RadioServiceCodeId, rsc.RadioServiceCode + ' - ' + rsc.RadioService as RadioService FROM sbi_l_radioservicecodes rsc INNER JOIN sbi_l_radioservicecodegroups rscg ON rsc.radioservicecodeid = rscg.radioservicecodeid WHERE rscg.radioservicegroupid IN (select val from dbo.fnParseArray(@RadioServiceGroup,',')) OR @RadioServiceGroup IS …
73 sql  sql-server  tsql 

14
如何比较在T-SQL中可能都为空的值
我想确保我没有在表中插入重复的行(例如,仅主键不同)。我所有的字段都允许使用NULLS,因为我将null表示为“所有值”。由于为空,因此我的存储过程中的以下语句不起作用: IF EXISTS(SELECT * FROM MY_TABLE WHERE MY_FIELD1 = @IN_MY_FIELD1 AND MY_FIELD2 = @IN_MY_FIELD2 AND MY_FIELD3 = @IN_MY_FIELD3 AND MY_FIELD4 = @IN_MY_FIELD4 AND MY_FIELD5 = @IN_MY_FIELD5 AND MY_FIELD6 = @IN_MY_FIELD6) BEGIN goto on_duplicate END 因为NULL = NULL不为真。 如何在没有每一列都具有IF IS NULL语句的情况下检查重复项?


5
如何将选择结果分配给变量?
如何将选定的字段值存储到查询的变量中,并在更新语句中使用它? 这是我的程序: 我正在编写一个执行以下操作的SQL Server 2005 T-SQL存储过程: 从发票表中获取发票编号列表并将其存储到Cursor 从光标获取发票ID-> tmp_key变量 foreach tmp_key从客户表中找到发票客户的主要联系人ID 使用主要联系人ID更新客户联系人密钥 关闭光标 这是我的代码: DECLARE @tmp_key int DECLARE @get_invckey cursor set @get_invckey = CURSOR FOR select invckey from tarinvoice where confirmtocntctkey is null and tranno like '%115876' OPEN @get_invckey FETCH NEXT FROM @get_invckey into @tmp_key WHILE (@@FETCH_STATUS = 0) BEGIN …
73 tsql  cursor 

10
使用T-SQL进行模糊匹配
我有一个表的人与personaldata等。有很多专栏,但这里有趣的是:addressindex,lastname以及firstname在addressindex公寓门口向下钻取的唯一地址。因此,如果我有“喜欢以下”两个人,lastname并且有一个firstnames相同,则很可能是重复的。 我需要一种列出这些重复项的方法。 tabledata: personid 1 firstname "Carl" lastname "Anderson" addressindex 1 personid 2 firstname "Carl Peter" lastname "Anderson" addressindex 1 我知道如果要在所有列上都完全匹配怎么办,但是我需要模糊匹配来完成(从上面的示例中)这样的结果: Row personid addressindex lastname firstname 1 2 1 Anderson Carl Peter 2 1 1 Anderson Carl ..... 关于如何以良好方式解决此问题的任何提示?

8
如何在T-SQL中翻转位字段?
我正在尝试使用更新查询来翻转SQL Server中的位字段,也就是说,我想将所有0都变成1,反之亦然。什么是最优雅的解决方案? 在T-SQL中似乎没有按位NOT运算符(除非我遗漏了一些明显的东西),而且我无法找到执行更新的任何其他方式。
72 sql  sql-server  tsql 

6
仅在尚未插入的行插入
我一直使用类似于以下内容的方法来实现它: INSERT INTO TheTable SELECT @primaryKey, @value1, @value2 WHERE NOT EXISTS (SELECT NULL FROM TheTable WHERE PrimaryKey = @primaryKey) ...但是一旦加载,就会发生主键冲突。这是唯一插入到该表中的唯一语句。那么这是否意味着上述陈述不是原子的? 问题在于,几乎不可能随意重建。 也许我可以将其更改为以下内容: INSERT INTO TheTable WITH (HOLDLOCK, UPDLOCK, ROWLOCK) SELECT @primaryKey, @value1, @value2 WHERE NOT EXISTS (SELECT NULL FROM TheTable WITH (HOLDLOCK, UPDLOCK, ROWLOCK) WHERE PrimaryKey = @primaryKey) 虽然,也许我使用了错误的锁或使用了过多的锁之类的东西。 我在stackoverflow.com上看到了其他问题,那里的答案都提示“ …


5
创建一个SQL查询以检索最新记录
我正在为我的项目团队创建状态板模块。状态板允许用户将其状态设置为进出,也可以提供注释。我打算将所有信息存储在一个表中...数据示例如下: Date User Status Notes ------------------------------------------------------- 1/8/2009 12:00pm B.Sisko In Out to lunch 1/8/2009 8:00am B.Sisko In 1/7/2009 5:00pm B.Sisko In 1/7/2009 8:00am B.Sisko In 1/7/2009 8:00am K.Janeway In 1/5/2009 8:00am K.Janeway In 1/1/2009 8:00am J.Picard Out Vacation 我想查询数据并返回每个用户的最新状态,在这种情况下,我的查询将返回以下结果: Date User Status Notes ------------------------------------------------------- 1/8/2009 12:00pm B.Sisko In Out to …

10
我可以添加没有默认值的非空列吗
是否可以添加我指定为NOT NULL的列,我不想指定DEFAULT值,但是MS-SQL 2005说: ALTER TABLE仅允许添加可以包含空值或指定DEFAULT定义的列,或者要添加的列是Identity或timestamp列,或者如果不满足任何先前条件,则该表必须为空才能允许添加本专栏的内容。无法将列“ test”添加到非空表“ shiplist”中,因为它不满足这些条件。 如果是,请让我知道语法,如果否,请说明原因。



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.