当可选参数为null或为空时,如何忽略该条件?例如
declare @color nvarchar(50)
declare @time datetime
set @color = null
select *
from apples
where apple.color = @color
and apple.time = @time
Run Code Online (Sandbox Code Playgroud)
如果@color或@time为null,我想忽略这个条件.
昨天我的朋友问了我一个关于这个查询的问题:
select * from user where 1=1
Run Code Online (Sandbox Code Playgroud)
我说查询不正确,但他说这是正确的.我不明白这个查询是如何正确的.该where 1 = 1部件如何工作?
SQL是:
execute ('delete from HttpRequests where Date < ''2009-08-' + convert(nvarchar(max), 0) + '''')
Run Code Online (Sandbox Code Playgroud)
错误是
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'convert'.
Run Code Online (Sandbox Code Playgroud)
注释掉转换部分会删除错误.怎么了?
我有以下内容
个字符
A
C
W
B
J
M
Run Code Online (Sandbox Code Playgroud)
如何插入一些序列号,以便在插入数字后字符的顺序不会改变?
我的意思是如果我使用row_number(),输出字符顺序就会改变
select
ROW_NUMBER() over(order by chars) as id,
t.* from @t t
Run Code Online (Sandbox Code Playgroud)
输出:
id chars
1 A
2 B
3 C
4 J
5 M
6 W
Run Code Online (Sandbox Code Playgroud)
我期望的期望是
id chars
1 A
2 C
3 W
4 B
5 J
6 M
Run Code Online (Sandbox Code Playgroud)
此外,我不能使用任何身份字段,id int identity因为我在查询的中间,我需要维护内部联接以实现某些目标.
我希望我能清楚自己.
请帮忙.提前致谢
我正在与DBA发生一个有趣的争论,他坚持认为不应该在T-SQL中使用DELETE命令,而是删除数据的正确方法是将您想保留的数据移动到临时表中,并删除并重新创建原始表.给出的理由是它应该防止索引碎片问题.
有没有人听说这是一种做法,任何人都可以提出为什么这可能是一个好主意?这是一个相当复杂的结构,我们通常会讨论用于无限期聚合数据的表的少量选择性删除(图中,一次少于1000行).
我无法想象这样做的理由,而不是简单地在适当的时候重新组织/重建索引,但如果我错过了什么,我会很乐意接受教育.谢谢!
我有许多类型Decimal(8, 2),并一直Substring用于获得小数值.
E.g.)
declare @val decimal(8, 2), @strVal varchar(10)
set @val = 15.80
set @strVal = cast(@val as varchar)
select @val, substring(@strVal, charindex('.', @strVal), len(@strVal))
Run Code Online (Sandbox Code Playgroud)
有没有更好的方式来简单地得到分数值,.80从@val而无需将其转换为一个字符?
我想知道是否有一个内置的UDF(用户定义函数)可以解析而不必推出我自己的版本.
我有存储过程getList(@date datetime)
如何以编程方式执行差异日期时间值的存储过程.
每个月的日期时间为3年.
我想在表格中返回最新添加记录的日期和ID.任何人都可以建议正确查询该PLZ.我们正在使用sqlServer
SELECT [BGArx_ID], [BGArx_PUBLISHED_DATE]
FROM TECH_ARTICLES
WHERE [BGArx_PUBLISHED_DATE] = ???
Run Code Online (Sandbox Code Playgroud) 我有一张简单的桌子
CREATE TABLE a(
id int IDENTITY(1,1) NOT NULL,
x varchar(50)
)
Run Code Online (Sandbox Code Playgroud)
我发现以下查询有效
select cast (id as varchar(3))+cast (x as varchar(3)) c from a
where cast (id as varchar(3))+cast (x as varchar(3))='1a'
Run Code Online (Sandbox Code Playgroud)
但这不起作用
select cast (id as varchar(3))+cast (x as varchar(3)) c from a
where c='1a'
Run Code Online (Sandbox Code Playgroud)
有人知道那是为什么吗?请不要因为某些原因我不想使用
where id=1 and x ='a'
Run Code Online (Sandbox Code Playgroud) 我不知道如何解释这个,所以我会用一个例子.
我必须在我的SQL Server表中的一个值/列中存储(等)一些用户ID,因此一个值看起来像这样"4231 3271 3722 7432 4831 3192".当然这可以存储为text,char,nchar,nvarchar和som.但哪个最好?如果我只需要存储整数(以及将它们分开的东西)?
那么在单个SQL Server单元中存储多个整数值的最佳方法是什么?
而且你不必向我发送任何替代方法,因为这只是一个例子,它是唯一正确的方法,即使我必须使用varchar :)