小编Joh*_*nFx的帖子

有没有办法在INSERT..SELECT语句中有条件地使用默认列值?

我在一个将行插入表的存储过程中有类似于以下的代码,我想将最后一列(FieldD)设置为@prmSomeValue,除非它是null,否则只需使用为其定义的默认值柱.

IF (@prmSomeValue IS NULL)
   INSERT INTO MyTable (fieldA,FieldB,FieldC)  
      SELECT A,B,C 
      FROM MyOtherTable
ELSE
   INSERT INTO MyTable (fieldA,FieldB,FieldC,FieldD)  
      SELECT A,B,C,@prmSomeValue 
      FROM MyOtherTable
Run Code Online (Sandbox Code Playgroud)

这有效,但违反了DRY原则.我试图用一个插入语句找到一些方法来做到这一点.以下伪代码的行.

   INSERT INTO MyTable (fieldA,FieldB,FieldC,FieldD)  
      SELECT A,B,C,ISNULL(@prmSomeValue,DEFAULT)
      FROM MyOtherTable
Run Code Online (Sandbox Code Playgroud)

有人有主意吗?

更新 - 再一次扭曲
默认约束不是文字值,而是如下所示的函数.

...DEFAULT (suser_sname()) FOR [FieldD]
Run Code Online (Sandbox Code Playgroud)

更新
我终于受到了惩罚并选择了较小的邪恶,只是将默认值函数复制到我的查询中,而不是落入为列配置的默认值.我不喜欢它,但它可以在我的查询中减少重复完成工作.

   INSERT INTO MyTable (fieldA,FieldB,FieldC,FieldD)  
      SELECT A,B,C,ISNULL(@prmSomeValue,suser_sname())
      FROM MyOtherTable
Run Code Online (Sandbox Code Playgroud)

sql t-sql insert sql-server-2008 column-defaults

6
推荐指数
1
解决办法
1656
查看次数

为什么SQL LIKE不能在Microsoft Access中工作?

我想做一个搜索语句并查询这样的事情

select * from table where col like '%vkvk%' 
Run Code Online (Sandbox Code Playgroud)

但通过反复试验,我得出的结论是,访问不适用于LIKE或通配符运算符.有没有人有其他解决方案,因为我实际上并不是这样,所以我真的不知道.

ms-access

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

动作名称与url不同

是否可以使用名称与url中指定的操作名称不同的操作方法?我尝试用Global.asax中的routes表做这个没有运气.这是我试过的:

routes.MapRoute(
               "ApproveSellers",
               "Admin/Account/ApproveSellers/",
               new { controller = "Account", action = "ApproveSeller"},
               new[] { "UI.Areas.Admin.Controllers" }
            );
Run Code Online (Sandbox Code Playgroud)

我希望将action方法称为ApproveSeller,但将url称为ApproveSellers.

c# routes razor asp.net-mvc-3

6
推荐指数
1
解决办法
2591
查看次数

如何在运行时在VBA代码中更改MS Access子窗体的视图?

这似乎是一件简单的事情,我相信我之前已经这样做了,但是我已经有一段时间了,因为我在Access中做了任何UI编程.我需要做的是在表单上放置一个按钮,在子表单的数据表和表单视图之间切换.

我找到了一个defaultview属性,但看起来它没有任何东西可以在窗体已经打开后切换它的视图.

基本上我需要我可以填写以下代码的属性..

sfEmployeeBatchEntry.Form.??? = acFormDS
Run Code Online (Sandbox Code Playgroud)

ms-access vba access-vba

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

将网页加载到浏览器时触发的第一个事件是什么

正如标题中所要求的那样,当网页加载到浏览器时,第一个事件是什么?我相信window.onload之前有事件.它们是什么,哪一个是第一个被解雇的?

javascript javascript-events

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

在SQL Server中,在具有聚簇索引的表上使用时,默认情况下是TOP确定性的吗?

所以我试图向一些人解释为什么这个查询是个坏主意:

SELECT z.ReportDate, z.Zipcode, SUM(z.Sales) AS Sales,
COALESCE(
  (SELECT TOP (1) GroupName
  FROM dbo.zipGroups
  WHERE (Zipcode = z.Zipcode)), 'Unknown') AS GroupName,
COALESCE(
  (SELECT TOP (1) GroupCode
  FROM dbo.zipGroups
  WHERE (Zipcode = z.Zipcode)), 0) AS GroupNumber
FROM dbo.Report_ByZipcode AS z
GROUP BY z.ReportDate, z.Zipcode
Run Code Online (Sandbox Code Playgroud)

并建议一个更好的方式来写它,当我的老板结束讨论时,"嗯,它已经返回了去年的正确数据,我们没有遇到任何问题,所以没关系."

在这一点上,我想,在世界上,甚至可能是什么?

经过一番挖掘,我发现了这些事实:

  1. 此查询应按Zipcode和date对销售进行分组,并将这些内容链接到ZipGroup分配给ZipGroups表的最大组(按人口大小).
  2. 每个Zipcode可以分配到0到多个组,如果Zipcode被分配到0个组,它就不在zipGroups表中.
  3. A组是地理区域,GroupNumbers按人口从最大到最小排名(例如,覆盖NY-NJ-CT三态区域的组是GroupNumber 1,而North Platte,Nebraska是GroupNumber 209).
  4. zipGroups表至少在2年内没有变化.
  5. zipGroups表有一个聚集索引,Zipcode,GroupNumber(升序)作为键.
  6. Zipcode,GroupNumber的组合在zipGroups中是唯一的.

所以我的问题有2个部分.

A)即使SELECT TOP查询中没有ORDER BY子句,它们实际上是确定性的,因为聚簇索引基本上是为它提供默认的ORDER BY吗?

B1)如果这是真的,那么查询是否会岌岌可危,实际上正在做它应该做的事情?

B2)如果不是这样,你能帮我证明一下吗?

注意:我已经重写了这个以使用连接,所以我不需要SQL来修复它,我需要将它投入生产中,所以我不再担心它会破坏.

sql sql-server

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

带有附加数据的主键

我在某处读过,可以选择在主键创建的树叶上存储其他数据.例如,如果我有一个包含列的表:row_id,customer_id,我需要显示customer_name,我可以在table和customers表之间进行连接.但我也可以使用customers表的主键(带有customer_id)存储customer_name,并且sql引擎不必加载整行客户以便获取客户名称.

有人能描述得更好吗?我该如何实现呢?

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

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

使用javascript舍入小数

我需要使用javascript将小数值四舍五入到小数位.

防爆,:

16.181 to 16.18
16.184 to 16.18
16.185 to 16.19
16.187 to 16.19
Run Code Online (Sandbox Code Playgroud)

我找到了一些答案,但大多数答案都没有完成16.185到16.19.

javascript decimal rounding

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

根据浏览器高度更改Css文件

我可以根据浏览器的高度更改加载的CSS文件吗?

例如,如果浏览器小于600px,则使用index_sm.css,否则使用index_lg.css.

css window

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

如何在MySQL中按DateTime字段的小时部分过滤查询?

我需要从表中选择行,例如,无论日期如何,时间都是> = 18:00:00。问题在于值是日期时间类型,因此旁边还有日期。例如2012-01-25 18:00:00。

table1
======
row 1:   id='1'   datetime='2012-01-25 18:00:00'
row 2:   id='2'   datetime='2012-01-27 15:00:00'
row 3:   id='3'   datetime='2012-01-30 19:45:00'
Run Code Online (Sandbox Code Playgroud)

我需要选择第1行和第3行。

有没有办法结合LIKE和> =来进行时间> ='%18:00:00',其中%代表任何日期?

mysql datetime

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