使用SQL Server 2008.
示例表:
CREATE table dbo.blobtest
(id int primary key not null,
name nvarchar(200) not null,
data varbinary(max) null)
Run Code Online (Sandbox Code Playgroud)
示例查询:
select id, name,
cast((case when data is null then 0 else 1 end) as bit) as DataExists
from dbo.blobtest
Run Code Online (Sandbox Code Playgroud)
现在,查询需要返回一个"DataExists"列,如果blob为null,则返回0,否则返回1.
这一切都很好,但我想知道它的效率如何.即,SQL服务器是否需要将整个blob读入其内存,或者是否有一些优化,以便它只进行足够的读取以确定blob是否为空?
(FWIW,对于此示例,sp_tableoption"超出行的大值类型"选项设置为OFF).
有一些问题想出这一个.
select*,(从chicken_photo选择top1 chicken_nr,其中鸡=代码顺序为[sort])作为Chicken的照片
代码是Table Chicken中的一列
基本上得到这只鸡的封面照片.
为了更清楚,我希望它从表Chicken返回多行.但只有一个来自chicken_photo的条目.
var q = from chicken in data.chickens
join photos in data.chicken_photos
on chicken.Code equals photos.chicken
where chicken.Lang==lang && chicken.photographer_nr == nr
group chicken by new {chicken.photographer,photos.Photograph_Nr,chicken.Title,chicken.Code}
Run Code Online (Sandbox Code Playgroud) 请原谅我,因为我是一个sql noob.我正在尝试使用以下内容进行插入,但是我对撇号有问题.我有很多要插入的记录,但很多都有同样的问题.有没有逃脱它们的方法?
INSERT INTO [dbo].[tb_Chefs] ([ChefHotelID], [HotelID], [ChefID],
[Position], [GroupID])
VALUES(N'b809a86e-f7f2-45b2-a240-0049f51509d7' ,N'14481', N'624',
N'Chef d'atelier', N'331')
GO
Run Code Online (Sandbox Code Playgroud)
任何帮助非常感谢.
有两种方法可以创建约束,
方法A:
ALTER TABLE dbo.<tablename> ADD CONSTRAINT
<namingconventionconstraint> UNIQUE NONCLUSTERED
(
<columnname>
Run Code Online (Sandbox Code Playgroud)
方法B:
CREATE UNIQUE NONCLUSTERED INDEX
<namingconventionconstraint> ON dbo.<tablename>
(
<columnname>
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
但是,似乎需要使用依赖于它们的创建方式(Drop约束与drop index)的方法来删除这些约束.有没有办法确定创建约束的方法,而不是尝试方法并查看它是否失败?我知道你可以让SQL Server为你创建一个drop脚本,但我正在寻找某种查询.
我和我的朋友争论反对他在varchar中存储价格,价值和其他类似信息的建议.
我的观点是基于
等等
但他说,在他以前的工作中,每个人都习惯将这些值存储在varchar中,因为DB和APP之间的通信在这种方法中非常有效.(我仍然不能接受这个)
在varchar中存储这些值真的有一些优点吗?
注意:我不是在谈论PhoneNo,ID,邮政编码,SSN等栏目.我知道varchar最适合那些.这些列是基于值的,并且肯定会以某种方式参与计算.
我正在尝试从“-”字符后的“描述”列中删除文本。我知道我必须使用 Right() 函数,但是循环遍历所有记录并更改 Description 列中的所有记录的语法是什么样的?
例子...
前:
0002 55 Actor Hill - 0002
0004 57 Adair - 0004
0005 74 Adams - 0005
Run Code Online (Sandbox Code Playgroud)
后:
0002 55 Actor Hill
0004 57 Adair
0005 74 Adams
Run Code Online (Sandbox Code Playgroud) 我似乎在我的Dev服务器上有一个应用程序,它有很多打开的连接(它们应该在那里,但是一些坏的数据层被用来打开它们,忘了关闭它们).我只是希望它们关闭,以便我可以在服务器上运行其他应用程序.如何强制关闭所有连接?
declare @fieldForceCounter as int
declare @SaleDate as dateTime
declare @RandomNoSeed as decimal
set @fieldForceCounter = 1
set @SaleDate = '1 Jan 2009'
set @RandomNoSeed = 0.0
WHILE @fieldForceCounter <= 3
BEGIN
while @SaleDate <= '1 Dec 2009'
begin
INSERT INTO MonthlySales(FFCode, SaleDate, SaleValue) VALUES(@fieldForceCounter, @SaleDate, RAND(@RandomNoSeed))
set @saleDate = @saleDate + 1
set @RandomNoSeed = Rand(@RandomNoSeed) + 1
end
set @SaleDate = '1 Jan 2009'
set @fieldForceCounter = @fieldForceCounter + 1
END
GO
Run Code Online (Sandbox Code Playgroud)
该 T-SQL 命令应该在“ SaleValue”表的“ MonthlySales”列中插入随机值。 …
我已经阅读了很多关于我们是否应该将主键作为标识列的文章,但我仍然感到困惑.
使列具有标识的优点在于它可以在连接中提供更好的性能并提供数据一致性.但是有一个与标识相关的主要缺点,即当INSERT语句失败时,IDENTITY值仍会增加如果事务被回滚,则新的IDENTITY列值不会回滚,因此我们最终会在排序方面出现空白.我可以使用GUID(通过使用NEWSEQUENTIALID),但它会降低性能.
SQL Server 2005:
以下观点
SELECT CONVERT(VARCHAR(20), keyedtimestamp, 101) as KeyedDate
FROM TMSSTATFILE_STATS a
WHERE (CONVERT(VARCHAR(20), a.KeyedTimestamp, 101) BETWEEN '03/01/2011' And '03/31/2011')
ORDER BY KeyedDate
Run Code Online (Sandbox Code Playgroud)
截止日期为2011年3月2日至2011年3月31日.
如果我将第一个日期更改为03/00/2011
SELECT CONVERT(VARCHAR(20), keyedtimestamp, 101) as KeyedDate
FROM TMSSTATFILE_STATS a
WHERE (CONVERT(VARCHAR(20), a.KeyedTimestamp, 101) BETWEEN '03/00/2011' And '03/31/2011')
ORDER BY KeyedDate
Run Code Online (Sandbox Code Playgroud)
它现在提供2011年3月1日至2011年3月31日的数据
KeyedTimestamp字段是DateTime,并且有时间与这些记录相关联.2011年3月31日的所有记录都已计算在内.我知道我可以通过在第二个日期之间提供最大时间来实现这一点,所以我不是在寻找替代where子句,而是要理解为什么它忽略了第一个的记录,即使它合并了从31日开始.
它几乎就像它在3月1日23:59:59检查,我希望我可以消除这种检查,我只关心日期,而不是时间
sql-server ×6
sql ×5
t-sql ×2
.net ×1
between ×1
c# ×1
connection ×1
constraints ×1
identity ×1
iis ×1
linq ×1
primary-key ×1
random ×1
sleep ×1
string ×1
types ×1