标签: sql-server-2008-r2

与(nolock)或(nolock) - 有区别吗?

一切都基于这样的假设,即(nolock)完全适合于这种情况.已经有很多问题争论是否与(nolock)一起使用.

我环顾四周,无法找到使用之间是否存在实际差异with(nolock):

select customer, zipcode from customers c with(nolock) 
Run Code Online (Sandbox Code Playgroud)

或者只是(nolock):

select customer, zipcode from customers c (nolock) 
Run Code Online (Sandbox Code Playgroud)

这两者之间是否存在功能差异?文体?
一个比另一个年长,有可能被弃用吗?

sql sql-server select nolock sql-server-2008-r2

42
推荐指数
3
解决办法
5万
查看次数

使用JOIN时WHERE Clause vs ON

假设我有以下T-SQL代码:

SELECT * FROM Foo f
INNER JOIN Bar b ON b.BarId = f.BarId;
WHERE b.IsApproved = 1;
Run Code Online (Sandbox Code Playgroud)

以下一行也返回相同的行集:

SELECT * FROM Foo f
INNER JOIN Bar b ON (b.IsApproved = 1) AND (b.BarId = f.BarId);
Run Code Online (Sandbox Code Playgroud)

这可能不是这里最好的案例样本,但这两者之间是否有任何性能差异?

sql t-sql sql-server inner-join sql-server-2008-r2

41
推荐指数
3
解决办法
2万
查看次数

如何从SQL查询返回默认值

如果查询没有返回任何行,是否有任何简单的方法可以返回单个标量或默认值?

此刻我有类似这样的代码示例:

IF (EXISTS (SELECT * FROM Users WHERE Id = @UserId))  
    SELECT Name FROM Users WHERE Id = @UserId  
ELSE
    --default value
    SELECT 'John Doe'
Run Code Online (Sandbox Code Playgroud)

如何在不使用IF-ELSE的情况下以更好的方式做到这一点?

sql sql-server sql-server-2008-r2

41
推荐指数
3
解决办法
7万
查看次数

sql server将日期转换为字符串MM/DD/YYYY

我正在使用SQL Server 2008.

我有以下内容:

    select convert(varchar(20),fmdate) from Sery
Run Code Online (Sandbox Code Playgroud)

如何将日期转换为字符串,使其显示为MM/DD/YYYY

sql-server-2008-r2

40
推荐指数
4
解决办法
21万
查看次数

ORE BY子句的CASE WHEN语句

我正在使用SQL Server 2008 R2.

我想要对表中的记录进行基于优先级的排序.

这样我在ORDER BY子句中使用CASE WHEN语句.ORDER BY子句如下:

ORDER BY 
CASE WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount desc, TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC END, 
CASE WHEN TblList.HighCallAlertCount <> 0 THEN TblList.HighCallAlertCount desc, TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC END,
Case WHEN TblList.HighAlertCount <> 0 THEN TblList.HighAlertCount DESC, TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC END,
CASE WHEN TblList.MediumCallAlertCount <> 0 THEN TblList.MediumCallAlertCount DESC, TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC END,
Case WHEN TblList.MediumAlertCount <> 0 THEN TblList.MediumAlertCount DESC, TblList.LastName …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008-r2

40
推荐指数
2
解决办法
15万
查看次数

sql server 2008 r2中的数字(18,0)是什么

我从这个数据类型中找到了一个包含此列的表

numeric(18, 0)
Run Code Online (Sandbox Code Playgroud)

那是什么?为什么018意思

我已经检查过这个问题SQL Server中的数字,浮点数和小数之间的区别但是无法理解它.

我可以在该列中添加(-10)吗?

我可以在该列中添加所有负数吗?

我可以在该列中添加任何正数吗?

更新1

这是我在该列中找到的数据样本

100
263
13
2
9
4
3
3
28
15
33
16
135
50
64
60
100
500
150
Run Code Online (Sandbox Code Playgroud)

更新2是否可以拥有-+

sql sql-server sql-server-2008-r2

39
推荐指数
2
解决办法
15万
查看次数

SQL Server:无法在程序集中找到类型

假设程序集dll:

using Microsoft.SqlServer.Server;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System;
using System.Text;

namespace CLRFunctions
{
    public class T
    {
        [SqlFunction(DataAccess = DataAccessKind.Read)]
        public static String NormalizeString(String s, String normalizationForm)
        {
            NormalizationForm form = NormalizationForm.FormC;

            if (String.Equals(f, "FormD", StringComparison.OrdinalIgnoreCase))
                form = NormalizationForm.FormD;

            return = s.Normalize(form);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:将程序集目标指向.NET 3.5,因为SQL Server不支持.NET 4.0

将程序集复制到一个位置,"创建"程序集工作正常:

CREATE ASSEMBLY CLRFunctions FROM 'c:\Program Files\My App\CLRFunctions.dll';
Run Code Online (Sandbox Code Playgroud)

注:然后启用CLR函数,否则会被打破 默认:

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO …
Run Code Online (Sandbox Code Playgroud)

sql-server sqlclr user-defined-functions sql-server-2008-r2

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

38
推荐指数
1
解决办法
5万
查看次数

使用ORDER BY子句创建视图

我正在尝试使用ORDER BY子句创建视图.我已经在SQL Server 2012 SP1上成功创建它,但是当我尝试在SQL Server 2008 R2上重新创建它时,我收到此错误:

消息102,级别15,状态1,过程TopUsers,第11行
'OFFSET'附近的语法不正确.

创建视图的代码是

CREATE View [dbo].[TopUsersTest] 
as 
select 
u.[DisplayName]  , sum(a.AnswerMark) as Marks
From Users_Questions us inner join [dbo].[Users] u
on u.[UserID] = us.[UserID] 
inner join [dbo].[Answers] a
on a.[AnswerID] = us.[AnswerID]
group by [DisplayName] 
order by Marks desc
OFFSET 0 ROWS
Run Code Online (Sandbox Code Playgroud)

=====================

这是该图的屏幕截图

我想返回用户DisplayNameUserTotalMarks秩序这一结果说明,所以用最大的成果,用户与上顶.

t-sql database sql-server view sql-server-2008-r2

38
推荐指数
3
解决办法
14万
查看次数

数据库中所有用户定义函数的SQL列表

我正在寻找一个SQL查询,它输出数据库目录中所有用户定义函数的函数定义.

我找到了

SELECT OBJECT_DEFINITION (OBJECT_ID(N'dbo.UserFunctionName')) AS [Object Definition]
Run Code Online (Sandbox Code Playgroud)

SELECT ROUTINE_NAME FROM information_schema.routines WHERE routine_type = 'function'
Run Code Online (Sandbox Code Playgroud)

但我无法想到或找到将ROUTINE_NAME列表提供给OBJECT_ID的方法.

这里的目的是在数据库中用于数据库变更分析的用户定义函数定义的可搜索文本,如果像完整的SQL过程或有用的帮助程序更容易,我会这样做并发布它.

sql-server sql-server-2008-r2

37
推荐指数
4
解决办法
8万
查看次数