INFORMATION_SCHEMA.TABLES或INFORMATION_SCHEMA.COLUMNS仅适用于指定的数据库.
是否可以使用INFORMATION_SCHEMA查询服务器上所有数据库的表元数据?
我的.NET应用程序在运行时评估用户定义的规则.这些规则由用户通过GUI菜单输入系统.我生成一个与之对应的逻辑语句并将其存储在数据库中.
例如:( Name ='John'AND Surname ='Smith')或Number> 12
然而,当用户想要通过GUI编辑规则时,我需要进行反向操作以从存储的规则确定菜单状态,这是昂贵且复杂的.您如何建议以一种可以轻松转换为菜单状态的方式存储规则?
我使用Sql Server 2008.
我有一个生成ID的表.我想检索生成的ID并将其存储在bigint变量中.我该怎么做?
这是存储过程,它将ID作为结果集.但我不能将它存储在bigint变量中.
ALTER PROC SCN.TRANSACTION_UNIQUE_ID_SELECT
AS
UPDATE COR.TRANSACTION_UNIQUE_ID
SET ID = ID + 1
OUTPUT INSERTED.ID AS ID
Run Code Online (Sandbox Code Playgroud) 我有一个C#控制台应用程序项目.
我有一个逻辑表达式作为nvarchar存储在数据库中.
例如,存储的表达式为:((34> 0)||(US == ES))&&(4312 = 5691)
在我的应用程序运行时,我想检索表达式并对其进行评估,以便结果为true或false.
我怎么能在运行时这样做?
我有一个存储过程来执行记录搜索.
问题是来自UI的一些搜索条件可能是空字符串.因此,当未指定条件时,LIKE语句变得多余.
我怎样才能有效地执行该搜索或Sql Server?或者,它是否优化了LIKE('%%')查询,因为它意味着没有可比较的内容?
存储过程是这样的:
ALTER PROC [FRA].[MCC_SEARCH]
@MCC_Code varchar(4),
@MCC_Desc nvarchar(50),
@Detail nvarchar(50)
AS
BEGIN
SELECT
MCC_Code,
MCC_Desc,
CreateDate,
CreatingUser
FROM
FRA.MCC (NOLOCK)
WHERE
MCC_Code LIKE ('%' + @MCC_Code + '%')
AND MCC_Desc LIKE ('%' + @MCC_Desc + '%')
AND Detail LIKE ('%' + @Detail + '%')
ORDER BY MCC_Code
END
Run Code Online (Sandbox Code Playgroud) 我在Sql Server 2008上有这样的查询:
DECLARE @START_DATE DATETIME
SET @START_DATE = GETDATE()
SELECT * FROM MY_TABLE
WHERE TRANSACTION_DATE_TIME > DATEADD(MINUTE, -1440, @START_DATE)
Run Code Online (Sandbox Code Playgroud)
在上面看到的select查询中,SqlServer是否优化查询以便不再一次计算DATEADD结果.或者我自己有责任将DATEADD结果存储在临时变量上?
想象一下,您有一个类层次结构:
class Base
{
public virtual string GetName()
{
return "BaseName";
}
}
class Derived1 : Base
{
public override string GetName()
{
return "Derived1";
}
}
class Derived2 : Base
{
public override string GetName()
{
return "Derived2";
}
}
Run Code Online (Sandbox Code Playgroud)
以最恰当的方式,我如何以所有"GetName"方法添加"XX"字符串以在派生类中返回值的方式编写代码?
例如:
Derived1.GetName returns "Derived1XX"
Derived2.GetName returns "Derived2XX"
Run Code Online (Sandbox Code Playgroud)
更改GetName方法实现的代码并不是一个好主意,因为可能存在几种派生类型的Base.
在SQL Server 2008中,我已添加OPTION (MAXDOP 4)到查询中。
但是,在估计的执行计划中没有“平行”步骤。
这是否意味着即使我说“ MAXDOP 4” ,SQL Server也不选择不并行执行查询?
如何强制SQL Server使用并行性?
我正在使用SQL Server 2008
我有一个名为表中MYTABLE有两列:ID,STATUS
我想编写一个存储过程,返回STATUS0 的记录.但是这个存储过程必须将STATUS返回的行更新为1.如何在单个查询中选择和更新操作?
我想更新一个表,并从SQL Server的默认"插入"表中获取更新的记录.
更新以下查询的一部分是成功的,但为什么查询的剩余"SELECT*FROM inserted"部分引发错误为"插入了无效的对象名称".?
use AdventureWorks
go
UPDATE TOP(50) Person.Address
SET City= 'PARIS'
SELECT * FROM inserted
Run Code Online (Sandbox Code Playgroud) sql ×7
sql-server ×7
.net ×3
c# ×3
sql-update ×2
dateadd ×1
evaluation ×1
oop ×1
parsing ×1
rule ×1
rule-engine ×1
search ×1
sql-like ×1
t-sql ×1
triggers ×1