小编Mud*_*san的帖子

存储过程与函数编译和性能差异

最近我给出了一个非常简单的访问者,让我解释了存储过程和UDF之间最基本的区别.

我能够回忆起这里列出的一些差异,但他不接受任何一个作为BASIC差异.

根据他的回答是SP只编译一次,而UDF每次被调用时编译,导致UDF比存储过程慢得多.

现在我已经搜索了但是无法明确判断这个断言是否属实.请验证这一点.

sql-server stored-procedures

6
推荐指数
2
解决办法
4570
查看次数

用空字符串替换的正则表达式

我需要一个正则表达式,它执行以下操作

  1. 如果起始行中第一个单词的第一个字母是小写,则匹配。
  2. 从包含以上字母的单词开始,替换为空字符串,直到出现大写字母开头的单词

这是我尝试过的:

string result = Regex.Replace(input,@"^[a-z]\s?[a-z0-9]\s?[^A-Z]","");
Run Code Online (Sandbox Code Playgroud)

这是应该发生的事情:

示例输入=“!jgf地区。国家财富”

所需输出=“国民财富”

我应该做什么来改进/纠正?

c# regex

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

COllation conflict ERROR,将存储过程的排序规则设置为数据库默认值

如何将存储过程的COLLATION设置为数据库缺省值,而不是该过程中的单个表列.

Cannot resolve the collation conflict between “SQL_Latin1_General_Pref_CP1_CI_AS” and “Latin1_General_CI_AS” in the equal to operation
Run Code Online (Sandbox Code Playgroud)

我收到排序规则冲突错误,因为数据库服务器排序规则与数据库排序规则不同.程序很大,我不知道哪个表列发生冲突.

是否可以为存储过程分配排序规则,以使该过程中的所有列具有相同的排序规则?Plz plz plz plz帮助.

sql sql-server collation

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

MySQL:选择列包含列表元素的行

我试图从列中包含列表元素的表中选择所有行:类似于

Select * from `table` where `column` (contains anything from {£,$,%,^,&,...,/})
Run Code Online (Sandbox Code Playgroud)

这基本上是非法的角色检查.

有人可以帮忙吗?

谢谢

php mysql sql

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

创建触发器以将列值插入到同一表SQL Server 2005的其他列中

如何创建触发器以在列中插入值,该列与表中新插入的行的同一表的另一列的值相同.

假设我有如下表格

ColumnA | ColumnB
Run Code Online (Sandbox Code Playgroud)

我希望一旦将行插入到表中或将columnB值更新,就将columnB值插入ColumnA.但它不应该相反,即将columnA值插入columnB

.下面的代码只处理INSERT,请帮助我如何同时处理插入和更新用时columnB值被插入或更新表即.

CREATE TRIGGER inserupdate
   ON  triggertestTable
   AFTER INSERT,UPDATE
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for trigger here
    declare @value int

    select @value=columnB from inserted

    update triggertestTable
    set columnA=@value

END
GO
Run Code Online (Sandbox Code Playgroud)

如果插入的值如下所示,这可以正常工作

insert into triggertestTable(columnB) values('xyz')
Run Code Online (Sandbox Code Playgroud)

ColumnB值插入columnA

ColumnA | ColumnB
  xyz   |  xyz 
Run Code Online (Sandbox Code Playgroud)

但是如果某个其他应用程序在columnA中插入值,则null值会更新

 insert into triggertestTable(columnA) values('pqr')
Run Code Online (Sandbox Code Playgroud)

现在的记录是

ColumnA | ColumnB
  xyz   |  xyz …
Run Code Online (Sandbox Code Playgroud)

sql sql-server triggers sql-server-2005

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

C#反射,获取重载方法

我已经检查了一些关于反射和重载方法的其他帖子,但可以找到任何帮助。我发现的一篇文章是this one,但这并没有多大帮助。

我有以下两种方法:

1 | public void Delete<T>(T obj) where T : class { ... }
2 | public void Delete<T>(ICollection<T> obj) where T : class { ... }
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取方法 N°1。

我尝试了经典GetMethod("Delete")方法,但由于有两个具有此名称的方法,因此Ambiguous抛出了-Exception。我尝试使用附加参数指定方法架构,例如GetMethod("Delete", new [] { typeof(Object) })没有找到任何东西(返回空值)。

我想我不妨循环遍历所有方法并检查参数。

我写了以下方法...

    public static IEnumerable<MethodInfo> GetMethods(this Type type, String name, Type schemaExclude)
    {
        IEnumerable<MethodInfo> m = type.GetRuntimeMethods().Where(x => x.Name.Equals(name));
        return (from r in m let p = r.GetParameters() where !p.Any(o => schemaExclude.IsAssignableFrom(o.ParameterType)) select r).ToList();
    } …
Run Code Online (Sandbox Code Playgroud)

c# generics reflection overloading generic-list

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

循环5一次记录并将其分配给变量

我有一张811记录表.我希望一次获得五条记录并将其分配给变量.下次当我foreachSSIS中运行循环任务时,它将循环另外五个记录并覆盖变量.我尝试过使用游标但找不到解决方案.任何帮助将受到高度赞赏.我有这样的表格,例如

ServerId ServerName
1         Abc11
2         Cde22
3         Fgh33
4         Ijk44
5         Lmn55
6         Opq66
7         Rst77
.           .
.           .
.           .
Run Code Online (Sandbox Code Playgroud)

我想查询应该采用如下的前五个名称并将其分配给变量

ServerId ServerName
1         Abc11
2         Cde22
3         Fgh33
4         Ijk44
5         Lmn55
Run Code Online (Sandbox Code Playgroud)

然后下一个循环取另外五个名称并覆盖变量值,依此类推,直到消耗掉最后一个记录.

sql-server ssis

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

匹配具有相同值SQL的多个列

假设表中有像列akey1,bkey2,ckey3和许多喜欢它.
有没有办法搜索共同的价值

SELECT * FROM table WHERE %key% LIKE 'xyz'

除了使用多个AND,OR条件.如果解决方案是DBMS特定的,则无关紧要.

sql

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

将两种类型的转换添加到单列中

我的表中有一个名为salary的列.存储值的另一个表就像

  • 5万卢比12千同样..

我想要结果

  • 5*10000 + 12*1000

我创建了一个查询,

SELECT TOP(10) 'INSERT INTO jobs(Budget) VALUES('+
CAST(SUBSTRING(
      CAST(r.Budget AS VARCHAR(50)), 0, PATINDEX('%laks%', r.Budget))*100000 AS VARCHAR(50))
      + ',' +CAST(SUBSTRING(
      CAST(r.Budget AS VARCHAR(50)), PATINDEX('%laks%', r.Budget) + 4
    ,patindex('%Thousands%', r.Budget) - PATINDEX('%laks%', r.Budget) - 4)* 1000  AS VARCHAR(50))+')'
    FROM requirementsdetailsfororganization r
Run Code Online (Sandbox Code Playgroud)

在这里,我可以将单独的值相乘.我不能添加两个值.

当我使用上面的查询我的结果是

INSERT INTO jobs(Budget) VALUES(200000,5000)
Run Code Online (Sandbox Code Playgroud)

预期产量:

INSERT INTO jobs(Budget) VALUES(205000)
Run Code Online (Sandbox Code Playgroud)

sql sql-server casting sql-server-2008

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

GUARANTEES列上的聚簇索引根据该列返回已排序的行

在这个有争议的问题上,我无法得到明确的答案. MSDN文档提到

集群

  • 聚簇索引根据键值对表或视图中的数据行进行排序和存储.这些是索引定义中包含的列.每个表只能有一个聚簇索引,因为数据行本身只能一个顺序排序.

  • 表中的数据行以排序顺序存储的唯一时间是表包含聚簇索引.当表具有聚簇索引时,该表称为聚簇表.如果表没有聚簇索引,则其数据行存储在称为堆的无序结构中.

虽然我看到了大部分答案

回答否定.

它是什么 ?

sql sql-server

4
推荐指数
2
解决办法
2645
查看次数