标签: t-sql

T-SQL中的布尔'NOT'不能处理'bit'数据类型?

尝试执行单个布尔NOT操作,似乎在MS SQL Server 2005下,以下块不起作用

DECLARE @MyBoolean bit;
SET @MyBoolean = 0;
SET @MyBoolean = NOT @MyBoolean;
SELECT @MyBoolean;
Run Code Online (Sandbox Code Playgroud)

相反,我越来越成功了

DECLARE @MyBoolean bit;
SET @MyBoolean = 0;
SET @MyBoolean = 1 - @MyBoolean;
SELECT @MyBoolean;
Run Code Online (Sandbox Code Playgroud)

然而,这似乎是一种扭曲的方式来表达像否定一样简单的东西.

我错过了什么吗?

sql t-sql sql-server boolean-operations

74
推荐指数
6
解决办法
8万
查看次数

在SQL Server中转义字符串,以便在LIKE表达式中使用它是安全的

如何在SQL Server的存储过程中转义字符串,以便在LIKE表达式中使用它是安全的.

假设我有一个NVARCHAR像这样的变量:

declare @myString NVARCHAR(100);
Run Code Online (Sandbox Code Playgroud)

我想在LIKE表达式中使用它:

... WHERE ... LIKE '%' + @myString + '%';
Run Code Online (Sandbox Code Playgroud)

如何在T-SQL中转义字符串(更具体地说,对LIKE模式匹配有意义的字符,例如%?),以便以这种方式使用它是安全的?

例如,给定:

@myString = 'aa%bb'
Run Code Online (Sandbox Code Playgroud)

我想要:

WHERE ... LIKE '%' + @somehowEscapedMyString + '%'
Run Code Online (Sandbox Code Playgroud)

匹配'aa%bb','caa%bbc'但不是'aaxbb''caaxbb'.

t-sql sql-server stored-procedures sql-like

74
推荐指数
3
解决办法
17万
查看次数

如何更新T-SQL中的DateTime字段?

以下查询不会更新datetime字段:

update table
SET EndDate = '2009-05-25'
WHERE Id = 1
Run Code Online (Sandbox Code Playgroud)

我也尝试过没有破折号,但这也不起作用.

sql t-sql sql-server types

74
推荐指数
5
解决办法
36万
查看次数

如何使用MSSQL GetDate()获取日期?

DELETE from Table WHERE Date > GETDATE();
Run Code Online (Sandbox Code Playgroud)

GETDATE()包括时间.而不是得到

2011-01-26 14:58:21.637
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到:

2011-01-26 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server datetime date

74
推荐指数
4
解决办法
11万
查看次数

将SQL Server日期时间转换为较短的日期格式

datetime在SQL Server中有一个列,它给我这样的数据10/27/2010 12:57:49 pm,我想查询这个列,但只是让SQL Server返回日月和年 - 例如.2010 10 27或类似的东西.

我应该研究哪些功能?

我应该尝试转换为其他日期数据类型吗?或者只是将其转换为字符串?

t-sql sql-server datetime

74
推荐指数
7
解决办法
36万
查看次数

SQL Server中最有效的方法是从日期+时间获取日期?

在MS SQL 2000和2005中,给定日期时间,例如'2008-09-25 12:34:56',获得仅包含'2008-09-25'的日期时间的最有效方法是什么?

这里重复一遍.

sql t-sql sql-server

73
推荐指数
4
解决办法
7万
查看次数

使用INSERT INTO插入多个值(SQL Server 2005)

在SQL Server 2005中,我试图弄清楚为什么我无法在表中插入多个字段.以下查询,插入一条记录,工作正常:

INSERT INTO [MyDB].[dbo].[MyTable]
           ([FieldID]
           ,[Description])
     VALUES
           (1000,N'test')
Run Code Online (Sandbox Code Playgroud)

但是,以下查询(指定多个值)将失败:

INSERT INTO [MyDB].[dbo].[MyTable]
           ([FieldID]
           ,[Description])
     VALUES
           (1000,N'test'),(1001,N'test2')
Run Code Online (Sandbox Code Playgroud)

我收到这条消息:

Msg 102, Level 15, State 1, Line 5
Incorrect syntax near ','.
Run Code Online (Sandbox Code Playgroud)

当我在SQL Sever Management Studio中查找INSERT的帮助时,他们的一个示例显示了我使用的"值"语法(括号中的值组并用逗号分隔).我在SQL Server Management Studio中找到的帮助文档看起来就像是SQL Server 2008,所以也许这就是插入不起作用的原因.无论哪种方式,我都无法弄清楚为什么它不起作用.

sql t-sql sql-server sql-server-2005

73
推荐指数
2
解决办法
18万
查看次数

SQL Server子查询返回了多个值.当子查询遵循=,!=,<,<=,>,> =时,不允许这样做

我运行以下查询:

SELECT 
   orderdetails.sku,
   orderdetails.mf_item_number,
   orderdetails.qty,
   orderdetails.price,
   supplier.supplierid,
   supplier.suppliername,
   supplier.dropshipfees,
   cost = (SELECT supplier_item.price
           FROM   supplier_item,
                  orderdetails,
                  supplier
           WHERE  supplier_item.sku = orderdetails.sku
                  AND supplier_item.supplierid = supplier.supplierid)
FROM   orderdetails,
       supplier,
       group_master
WHERE  invoiceid = '339740'
       AND orderdetails.mfr_id = supplier.supplierid
       AND group_master.sku = orderdetails.sku  
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

消息512,级别16,状态1,行2子查询返回的值超过1.当子查询跟随=,!=,<,<=,>,> =或子查询用作表达式时,不允许这样做.

有任何想法吗?

sql t-sql sql-server

73
推荐指数
8
解决办法
43万
查看次数

将MIN聚合函数应用于BIT字段

我想写下面的查询:

SELECT   ..., MIN(SomeBitField), ...
FROM     ...
WHERE    ...
GROUP BY ...
Run Code Online (Sandbox Code Playgroud)

问题是,SQL Server不喜欢它,当我想计算位字段的最小值时它返回错误Operand data type bit is invalid for min operator.

我可以使用以下解决方法:

SELECT   ..., CAST(MIN(CAST(SomeBitField AS INT)) AS BIT), ...
FROM     ...
WHERE    ...
GROUP BY ...
Run Code Online (Sandbox Code Playgroud)

但是,有更优雅的东西吗?(例如,可能存在一个我不知道的聚合函数,它会评估and字段中位值的逻辑.)

sql t-sql sql-server

73
推荐指数
6
解决办法
4万
查看次数

了解SELECT查询的SQL Server LOCKS

我想知道SELECT WITH (NOLOCK)如果影响该表的唯一其他查询是SELECT查询,在表上使用的好处是什么.

这是如何由SQL Server处理的?将一个SELECT查询块另一个SELECT查询?

我正在使用SQL Server 2012和Linq-to-SQL DataContext.

(编辑)

关于表现:

  • 如果使用锁定,第二个SELECT必须等待第一个SELECT完成SELECT吗?
  • 对比SELECT WITH (NOLOCK)

t-sql sql-server linq-to-sql

72
推荐指数
4
解决办法
14万
查看次数