我有以下代码:
const string Sql =
@"select distinct [name]
from tblCustomers
left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId
where (tblCustomer.Name LIKE '%@SEARCH%' OR tblCustomerInfo.Info LIKE '%@SEARCH%');";
using (var command = new SqlCommand(Sql, Connection))
{
command.Parameters.AddWithValue("@SEARCH", searchString);
...
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,我也试过这个:
const string Sql =
@"select distinct [name]
from tblCustomers
left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId
where (tblCustomer.Name LIKE @SEARCH OR tblCustomerInfo.Info LIKE @SEARCH );";
using (var command = new SqlCommand(Sql, Connection))
{
command.Parameters.AddWithValue("@SEARCH", "'%" + searchString + "%'");
... …Run Code Online (Sandbox Code Playgroud) 我正在尝试聚合SQLServer中的"STRING"字段.我想在Oracle中找到与LISTAGG相同的功能.
你知道如何做同样的功能或另一种方法吗?
例如,
Field A | Field B
1 | A
1 | B
2 | A
Run Code Online (Sandbox Code Playgroud)
我想这个查询的结果将是
1 | AB
2 | A
Run Code Online (Sandbox Code Playgroud) SQL Server中的LDF文件是什么?它的目的是什么?
我可以安全地删除吗?或减小其大小,因为有时它比数据库文件mdf大10倍.
在通过SQL SERVER 2008的新功能SPARSE COLUMN的一些教程之后,我发现如果列值为0或null它不占用任何空间但是当有值时,它需要4倍的常规空间(非稀疏)列保持.
如果我的理解是正确的,那么为什么我会在数据库设计时采用这种方法呢?如果我使用它,那么在什么情况下,我呢?
出于好奇,当列被定义为稀疏列时,怎么没有空间得到保留(我的意思是说,内部实现是什么)
提前致谢
我想知道是否可以将所有数据行从一个表移动到另一个表,这与某个查询匹配?
例如,我需要将所有表行从Table1移动到Table2,其中username ='X'和password ='X',这样它们将不再出现在Table1中.
我正在使用SQL Server 2008 Management Studio.
我有一个在TransactionScope中运行的代码块,在这段代码中,我多次调用DB.选择,更新,创建和删除整个色域.当我执行删除操作时,我使用SqlCommand的扩展方法执行它,如果查询死锁,它将自动重新提交查询,因为此查询可能会遇到死锁.
我相信当遇到死锁并且函数尝试重新提交查询时会发生此问题.这是我收到的错误:
与当前连接关联的事务已完成但尚未处理.必须先处理事务,然后才能使用连接执行SQL语句.
这是执行查询的简单代码(下面的所有代码都在使用TransactionScope执行):
using (sqlCommand.Connection = new SqlConnection(ConnectionStrings.App))
{
sqlCommand.Connection.Open();
sqlCommand.ExecuteNonQueryWithDeadlockHandling();
}
Run Code Online (Sandbox Code Playgroud)
以下是重新提交死锁查询的扩展方法:
public static class SqlCommandExtender
{
private const int DEADLOCK_ERROR = 1205;
private const int MAXIMUM_DEADLOCK_RETRIES = 5;
private const int SLEEP_INCREMENT = 100;
public static void ExecuteNonQueryWithDeadlockHandling(this SqlCommand sqlCommand)
{
int count = 0;
SqlException deadlockException = null;
do
{
if (count > 0) Thread.Sleep(count * SLEEP_INCREMENT);
deadlockException = ExecuteNonQuery(sqlCommand);
count++;
}
while (deadlockException != null && count < MAXIMUM_DEADLOCK_RETRIES);
if (deadlockException != null) throw deadlockException; …Run Code Online (Sandbox Code Playgroud) 我可以添加一个我指定为NOT NULL的列,我不想指定DEFAULT值,但是MS-SQL 2005说:
ALTER TABLE只允许添加可以包含空值的列,或者指定了DEFAULT定义,或者添加的列是标识或时间戳列,或者如果以前的条件都不满足,则表必须为空以允许添加这个专栏.列'test'不能添加到非空表'shiplist'中,因为它不满足这些条件.
如果是,请告诉我语法,如果不,请说明原因.
我有多个应用程序访问同一个数据库,如果其中一个应用程序在某个表中更改了任何内容(更新,插入),我需要收到通知.
数据库和应用程序不在同一台服务器中.
除非还指定了TOP,OFFSET或FOR XML,否则ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效.
我在尝试执行以下查询时遇到上述错误.任何人都可以看看,告诉我这里我做错了什么?
SELECT
*
FROM (
SELECT
Stockmain.VRNOA,
item.description as item_description,
party.name as party_name,
stockmain.vrdate,
stockdetail.qty,
stockdetail.rate,
stockdetail.amount,
ROW_NUMBER() OVER (ORDER BY VRDATE) AS RowNum
FROM StockMain
INNER JOIN StockDetail
ON StockMain.stid = StockDetail.stid
INNER JOIN party
ON party.party_id = stockmain.party_id
INNER JOIN item
ON item.item_id = stockdetail.item_id
WHERE stockmain.etype='purchase'
ORDER BY VRDATE DESC
) AS MyDerivedTable
WHERE
MyDerivedTable.RowNum BETWEEN 1 and 5
Run Code Online (Sandbox Code Playgroud) 我正在修改现有的SQL Server存储过程.我在表中添加了两个新列,并修改了存储过程以便选择这两个列.尽管SQL Server Keeps表中提供了这些列,但却出现此错误:
列名称"INCL_GSTAMOUNT"无效

谁能告诉我这里有什么问题?
sql-server ×10
sql ×6
c# ×3
ado.net ×2
t-sql ×2
aggregate ×1
database ×1
deadlock ×1
monitoring ×1
sql-like ×1