我正在尝试对别名列执行分组操作(下面的示例),但无法确定正确的语法.
SELECT LastName + ', ' + FirstName AS 'FullName'
FROM customers
GROUP BY 'FullName'
Run Code Online (Sandbox Code Playgroud)
什么是正确的语法?
进一步扩展问题(我没想到我收到的答案)解决方案是否仍然适用于CASEed别名列?
SELECT
CASE
WHEN LastName IS NULL THEN FirstName
WHEN LastName IS NOT NULL THEN LastName + ', ' + FirstName
END AS 'FullName'
FROM customers
GROUP BY
LastName, FirstName
Run Code Online (Sandbox Code Playgroud)
答案是肯定的,它仍然适用.
我有一个SQL Server 2000,其中包含一个包含image列的表.
如何通过指定文件的路径将文件的二进制数据插入该列?
CREATE TABLE Files
(
FileId int,
FileData image
)
Run Code Online (Sandbox Code Playgroud) 如何在存储过程中退出?
我有一个存储过程,我想尽早摆脱(尝试调试).我已经打过电话RETURN,并RAISERROR和SP在后台继续运行:
CREATE PROCEDURE dbo.Archive_Session @SessionGUID uniqueidentifier AS
print 'before raiserror'
raiserror('this is a raised error', 18, 1)
print 'before return'
return -1
print 'after return'
[snip]
Run Code Online (Sandbox Code Playgroud)
我知道它继续运行,因为我遇到了进一步的错误.我看不到任何印刷品.如果我注释掉大部分存储过程:
CREATE PROCEDURE dbo.Archive_Session @SessionGUID uniqueidentifier AS
print 'before raiserror'
raiserror('this is a raised error', 18, 1)
print 'before return'
return -1
print 'after return'
/*
[snip]
*/
Run Code Online (Sandbox Code Playgroud)
然后我没有得到我的错误,我看到结果:
before raiserror
Server: Msg 50000, Level 18, State 1, Procedure Archive_Session, Line 5
this is a raised error …Run Code Online (Sandbox Code Playgroud) t-sql sql-server stored-procedures sql-server-2000 flow-control
目前,我们在脚本文件中为每个存储过程使用单独的drop语句:
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MySP]')
AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[MySP]
Run Code Online (Sandbox Code Playgroud)
有没有办法一次性将它们全部丢弃,或者可能在一个循环中?
如果我使用类似的东西
[ntext2] <> '1,032.5',
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
数据类型ntext和varchar在不等于运算符时不兼容.
最好的解决方案是,如果对任何列类型以相同的方式实现比较.(<>运算符适用于NVARCHAR和INT).
我有以下函数返回表.
create Function FN(@Str varchar(30))
returns
@Names table(name varchar(25))
as
begin
while (charindex(',', @str) > 0)
begin
insert into @Names values(substring(@str, 1, charindex(',', @str) - 1))
set @str = substring(@str, charindex(',', @str) + 1, 100)
end
insert into @Names values(@str)
return
end
Run Code Online (Sandbox Code Playgroud)
请问任何人请解释我如何运行此功能.
在T-SQL中,如何检查字符串是否包含另一个字符串?
我有一个nvarchar可能是"橘子苹果".
我想做一个更新,例如,columm 不包含"Apples".
如何才能做到这一点?
我在~7000行T-SQL存储过程中有我的业务逻辑,其中大多数都有下一个JOIN语法:
SELECT A.A, B.B, C.C
FROM aaa AS A, bbb AS B, ccc AS C
WHERE
A.B = B.ID
AND B.C = C.ID
AND C.ID = @param
Run Code Online (Sandbox Code Playgroud)
如果我用这个替换这样的查询,我会获得性能增长:
SELECT A.A, B.B, C.C
FROM aaa AS A
JOIN bbb AS B
ON A.B = B.ID
JOIN ccc AS C
ON B.C = C.ID
AND C.ID = @param
Run Code Online (Sandbox Code Playgroud)
或者他们是一样的?
有人可以让我快速概述使用以下两个陈述的利弊:
TRUNCATE TABLE dbo.MyTable
Run Code Online (Sandbox Code Playgroud)
VS
DELETE FROM dbo.MyTable
Run Code Online (Sandbox Code Playgroud)
看来和完成所有事情似乎他们都做了同样的事情; 但这两者之间是否存在差异?
我正在创建一个SQL查询,我需要一个条件where子句.
它应该是这样的:
SELECT
DateAppr,
TimeAppr,
TAT,
LaserLTR,
Permit,
LtrPrinter,
JobName,
JobNumber,
JobDesc,
ActQty,
(ActQty-LtrPrinted) AS L,
(ActQty-QtyInserted) AS M,
((ActQty-LtrPrinted)-(ActQty-QtyInserted)) AS N
FROM
[test].[dbo].[MM]
WHERE
DateDropped = 0
--This is where i need the conditional clause
AND CASE
WHEN @JobsOnHold = 1 THEN DateAppr >= 0
ELSE DateAppr != 0
END
Run Code Online (Sandbox Code Playgroud)
以上查询无效.这不是正确的语法,还是有其他方法可以做到这一点,我不知道?
我不想使用动态SQL,所以有没有其他方法或我必须使用一个解决方法,如使用if else和使用不同的where子句相同的查询?
sql-server ×10
t-sql ×10
sql ×6
flow-control ×1
join ×1
ntext ×1
sql-delete ×1
string ×1
syntax ×1
truncate ×1
where-clause ×1