小编Sha*_*eis的帖子

有没有办法查看 SQL Server 2012 如何定义新身份?

关于Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64),有没有办法查看 SQL Server 使用什么机制来计算由创建的表的新标识值SELECT INTO


样本数据

-- Create our base table
CREATE TABLE dbo.A
(A_ID INT IDENTITY(1, 1),
x1 INT,
noise1 int DEFAULT 1,
noise2 char(1) DEFAULT 'S',
noise3 date DEFAULT GETUTCDATE(),
noise4 bit DEFAULT 0);

-- Create random data between the range of [0-3]
INSERT INTO dbo.A(x1)
SELECT s1000.n FROM
( SELECT TOP (10) n = 1 FROM sys.columns) AS s10 -- 10
CROSS JOIN
( SELECT TOP …
Run Code Online (Sandbox Code Playgroud)

sql-server database-internals identity sql-server-2012

7
推荐指数
1
解决办法
629
查看次数

为什么在生成行计数时 @@Rowcount 中不包含 Include Actual Execution Plan?

在最后一天更新表中的列时,我们的高级 DBA 向我展示了一种减少读取和争用的新技术。

伪代码是

WHILE 
  [always true condition] 
BEGIN 
  UPDATE [...]
IF @@ROWCOUNT = 0 BREAK;
END
Run Code Online (Sandbox Code Playgroud)

但是,在运行此程序时,我不小心将“包含实际执行计划”留在了“消息”选项卡中,因此我看到重复出现此情况:

(1000 row(s) affected)

(1 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

但是代码有效并且 WHILE 循环有效!

我的问题是,如果包括实际执行计划返回 1 行受影响,这不应该创建一个无限循环吗?

为什么没有被计算在内?

示例表如下:

USE [tempdb];
GO

CREATE TABLE [dbo].[UpdateMePlease]
([ID] INT IDENTITY(1, 1), [UselessNote] VARCHAR(10) DEFAULT 'Delete me!', [UpdateValue] VARCHAR(10) NULL)
GO

INSERT INTO [dbo].[UpdateMePlease] ([UselessNote]) DEFAULT VALUES;
GO 10000

SELECT * FROM [dbo].[UpdateMePlease];

/* turn Actual Execution Plan on here */

WHILE 1 = 1 BEGIN

UPDATE TOP (1000) [dbo].[UpdateMePlease] …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012

2
推荐指数
1
解决办法
175
查看次数

如果在select语句中不为空,如何替换列?

我有一个联系人(ID、名字、姓氏、中间名)。

例如:

| ID | FirstName | LastName | MiddleName |
|====|===========|==========|============|
| 1  | Mark      |Jordan    | E          |
|----|-----------|----------|------------|
| 2  | James     | Blunt    | NULL       | 
|----|-----------|----------|------------|
Run Code Online (Sandbox Code Playgroud)

我要输出

Mark E. Jordan
James Blunt
Run Code Online (Sandbox Code Playgroud)

因此,如果 MiddleName 不为空,则添加一个 '.' 之后,否则输出空值。

我知道isnull函数,但是我需要的是isnotnull函数。如何完成查询?

到目前为止我的查询:

select FirstName + ' ' + isnull(...)  + LastName
from Contact
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql functions

1
推荐指数
1
解决办法
6666
查看次数