标签: t-sql

使用ISNULL vs使用COALESCE检查特定条件?

我知道可以传递多个参数COALESCE,但是当你想只检查一个表达式以查看它是否存在时,你是使用默认值还是使用它更好的做法ISNULL

这两者之间是否有任何性能提升?

sql t-sql coalesce isnull

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

如何将选择结果分配给变量?

如何将选定的字段值存储到查询中的变量中并在更新语句中使用它?

这是我的程序:

我正在编写一个SQL Server 2005 T-SQL存储过程,它执行以下操作:

  1. 获取发票表中的发票ID列表并存储到Cursor
  2. 从游标 - > tmp_key变量获取发票ID
  3. foreach tmp_key从customer表中查找invoice client主要联系人ID
  4. 使用主要联系人ID更新客户端联系人密钥
  5. 关闭光标

这是我的代码:

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 
    SELECT c.PrimaryCntctKey as PrimaryContactKey
    from tarcustomer c, tarinvoice i
    where i.custkey = c.custkey and i.invckey = @tmp_key

    UPDATE tarinvoice set confirmtocntctkey = PrimaryContactKey where invckey = @tmp_key …
Run Code Online (Sandbox Code Playgroud)

t-sql cursor

70
推荐指数
5
解决办法
24万
查看次数

TABLOCK与TABLOCKX

有什么区别TABLOCKTABLOCKX http://msdn.microsoft.com/en-us/library/ms187373.aspx状态TABLOCK是共享锁,TABLOCKX而是独占锁.第一个可能只是一个索引锁吗?共享锁的概念是什么?

t-sql sql-server

70
推荐指数
3
解决办法
13万
查看次数

无法执行脚本:内存不足,无法继续执行程序

我有一个123MB的sql文件,我需要在我的本地PC上执行.但我得到了

Cannot execute script: Insufficient memory to continue the execution of the program
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何解决这个问题?

sql t-sql sql-server-2012

70
推荐指数
7
解决办法
9万
查看次数

什么是T-SQL要授予SQL Server中数据库中表的读写权限?

在SQL Server中为用户分配db_datareaderdb_datawriter角色的确切SQL是什么?

用户名是MYUSER和数据库MYDB.

t-sql sql-server

69
推荐指数
2
解决办法
9万
查看次数

如何使用T-SQL将秒转换为HH:MM:SS

情况是你有一个Seconds(XXX.XX)的值,并且你想使用T-SQL转换为HH:MM:SS.

例:

  • 121.25秒变为00:02:01.25

t-sql datetime

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

在SQL Server游标中获取多个值

我有一个游标,其中包含我想要一次处理的行中的几列.我注意到我看到的关于如何使用游标的大多数示例都显示它们将光标中的特定列一次分配给一个标量值,然后移动到下一行,

例如

OPEN db_cursor  
FETCH NEXT FROM db_cursor INTO @name  

WHILE @@FETCH_STATUS = 0  
BEGIN  
       --Do Stuff with @name scalar value, then get next row from cursor

       FETCH NEXT FROM db_cursor INTO @name  
END
Run Code Online (Sandbox Code Playgroud)

我想知道的是,是否可以执行以下操作:

    OPEN db_cursor  
    FETCH NEXT FROM db_cursor; 

    WHILE @@FETCH_STATUS = 0  
    BEGIN  
           SET @myName = db_cursor.name;
           SET @myAge = db_cursor.age;
           SET @myFavoriteColor = db_cursor.favoriteColor;
           --Do stuff with scalar values

           FETCH NEXT FROM db_cursor; 
    END
Run Code Online (Sandbox Code Playgroud)

总是感谢帮助.

sql t-sql sql-server cursor

69
推荐指数
1
解决办法
11万
查看次数

分区函数COUNT()可以使用DISTINCT

我正在尝试编写以下内容,以便获得不同的NumUsers,如下所示:

NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
Run Code Online (Sandbox Code Playgroud)

管理工作室对此并不感到高兴.当我删除DISTINCT关键字时,错误消失,但它不会是一个独特的计数.

DISTINCT在分区函数中似乎不可能.我如何寻找独特的计数?我是否使用更传统的方法,例如相关子查询?

进一步研究一下,也许这些OVER函数与Oracle的工作方式不同,它们不能用于SQL-Server计算运行总计.

我在SQLfiddle上添加了一个实例,我尝试使用分区函数来计算运行总计.

sql t-sql sql-server sql-server-2008-r2 sql-server-2014

69
推荐指数
4
解决办法
12万
查看次数

T-SQL循环查询结果

我运行一个查询select @id=table.id from table,我需要循环结果,所以我可以执行每行的存储过程exec stored_proc @varName=@id,@otherVarName='test'

如何在T-SQL脚本中执行此操作?

t-sql

69
推荐指数
3
解决办法
12万
查看次数

在SQL中的同一行上打印整数变量和字符串

好的,所以我在Technet上搜索了这个答案,但没有用.

我只想打印一个与两个String变量连接的整数变量.

这是我的代码,不运行:

print 'There are ' + @Number + ' alias combinations did not match a record'
Run Code Online (Sandbox Code Playgroud)

它似乎是这样一个基本功能,我无法想象它在T-SQL中是不可能的.但如果不可能,请说出来.我似乎无法找到一个直接的答案.

sql t-sql sql-server

69
推荐指数
3
解决办法
12万
查看次数