有没有办法将@my_variable字符串转换为值@my_variable?
我有一个存储变量名称的表.我需要获取此变量的值.像这样的东西:
DECLARE @second_variable AS NVARCHAR(20);
DECLARE @first_variable AS NVARCHAR(20);
SET @first_variable = '20';
SET @second_variable = SELECT '@first_variable'; --here I want that @second variable be assigned a value of "20".
Run Code Online (Sandbox Code Playgroud) 如何在一行中输入逗号列表字段并将其显示在列中?
例如,
ID | Colour
------------
1 | 1,2,3,4,5
Run Code Online (Sandbox Code Playgroud)
至:
ID | Colour
------------
1 | 1
1 | 2
1 | 3
1 | 4
1 | 5
Run Code Online (Sandbox Code Playgroud) top n通过随机顺序获取行的最佳方法是什么?
我使用的查询如下:
Select top(10) field1,field2 .. fieldn
from Table1
order by checksum(newid())
Run Code Online (Sandbox Code Playgroud)
上述查询中的问题是随着表大小的增加它会继续变慢.它将始终执行完整聚簇索引扫描以top(10)按随机顺序查找行.
还有其他更好的方法吗?
两者之间的表现有什么不同
select *
from table name
Run Code Online (Sandbox Code Playgroud)
和
select [col1]
,[col2]
......
,[coln]
from table name
Run Code Online (Sandbox Code Playgroud) 我有一堆表需要克隆来自的子集.我已经使用了许多循环来递归地完成了这项任务,但是它很慢.
问题是表上的层次结构是使用INT IDENTITY(1,1)列结构的,这意味着我必须将旧Id的映射到新Id的等.
我希望能够批量克隆每个阶段并使用该OUTPUT语句执行此映射,但我无法实现此目的,因为我无法访问语句FROM中的OUTPUT表.下面的示例显示了我想要实现但不起作用的内容.
CREATE TABLE #NewIds (IdNew INT, IdOld INT)
INSERT INTO IdTest
OUTPUT inserted.Id, i.Id
INTO #NewIds
SELECT id
FROM IdTest i
WHERE id IN (SELECT Id FROM #IdTestsToClone)
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释如何使这个工作?
我有以下存储过程返回A,B和降序计数.我试图用ROW_NUMBER,这样我就可以页的记录,但我希望第一个行号1是具有最高计数的记录,所以基本上,如果我返回一个表3次的记录和计数30,20,10,再行号1应计对应30,行号2应与计数对应20,和行号3应与计数对应10. dbo.f_GetCount是一个返回计数的函数.
create procedure dbo.Test
as
@A nvarchar(300) = NULL,
@B nvarchar(10) = NULL
as
select @A = nullif(@A,'')
,@B = nullif(@B,'');
select h.A
,hrl.B
,dbo.f_GetCount(hrl.A,h.B) as cnt
from dbo.hrl
inner join dbo.h
on h.C = hrl.C
where(@A is null
or h.A like '%'+@A+'%'
)
and (@B is null
or hrl.B = @B …Run Code Online (Sandbox Code Playgroud) 我需要做以下事情:
Public或被guest授予对象的任何权限(数据库角色和服务器角色)with grant具有对象的权限select name from sysobjects where xtype='X')我认为他们都是相互关联的(但不知道如何).
对此可以有任何建议吗?
或者用有用的表格指导我?
任何帮助将非常感谢.
我可以:
declare @idOrder int
set @idOrder = 21319
Run Code Online (Sandbox Code Playgroud)
我想要:
declare @idOrder int
set @idOrder = (21319, 21320)
Run Code Online (Sandbox Code Playgroud)
用于'WHERE'子句使用IN运算符的一系列语句中
delete Orders
where idOrder in @idOrder
Run Code Online (Sandbox Code Playgroud)
代替
delete Orders
where idOrder in (21319, 21320)
Run Code Online (Sandbox Code Playgroud) 我在表中存储一个bigint值(用于文件大小).我需要分组一列和filesizes(以字节为单位).我希望有一个列显示GB.这意味着Sum(FileSize/1024/1024/1024)哪个没有显示任何小数位.我的研究似乎表明这可能是由于截断而不是舍入.
我已经尝试了许多选择cast和convert,但似乎无法找到有关如何将任何信息sum和divide一bigint,保持小数.如果我将总和除以Excel,我得到小数,这告诉我必须有一种方法在SQL中执行此操作.
任何帮助表示赞赏.