小编SQL*_*ace的帖子

如何更新SQL中的选择性字段(保留一些不变)?

我想用两个日期更新记录,如果我没有要更新的新值,则保留现有数据.

这是一个示例表记录:

id  last_foo    last_bar
--  ----------  ----------
 1  2010-05-30  2010-05-30
Run Code Online (Sandbox Code Playgroud)

我正在使用的查询:

UPDATE sampledates
   SET last_foo = @LastFoo, 
       last_bar = @LastBar
 WHERE id = @ID;
Run Code Online (Sandbox Code Playgroud)

如果我可以为null的日期时间 LastFoo或者LastBar是空的,我想离开现有的SQL值按原样,否则更新.

例如,假设我使用以下值更新此记录(这是C#但适用任何语言):

DateTime? LastFoo = new DateTime('2010-06-04');
DateTime? LastBar = null;
Run Code Online (Sandbox Code Playgroud)

我希望记录为:

id  last_foo    last_bar
--  ----------  ----------
 1  2010-06-04  2010-05-30
Run Code Online (Sandbox Code Playgroud)

我知道如果值为null,我可以改变我的查询文本以省略第二列,但我想知道是否有一种方法可以保持查询原样并指定我不更改指定的列.

sql t-sql parameterized

3
推荐指数
2
解决办法
6351
查看次数

SQL Server 2005元数据搜索以获取存储过程参数

如何使用SQL Server 2005中的元数据获取存储过程的输入参数列表?我想对它做一个SELECt,然后迭代变量名.

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

3
推荐指数
1
解决办法
4044
查看次数

T-SQL游标的结果在运行时更改

有没有办法防止Cursor在运行时更改.如果我有一个迭代所有用户的游标,同时,在每个用户的处理中,我创建了一些额外的用户,那么Cursor也会迭代新创建的用户......

sql t-sql sql-server

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

计算SQL Server中的列数

有没有办法知道SQL中的列数,比如count()......?

metadata sql-server-2008

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

SQL Server中的ISNULL行为

根据我的理解,IsNull函数检查第一个值,如果它为null或空白,则返回下一个值.

SELECT ISNULL(1,getdate()) 
Run Code Online (Sandbox Code Playgroud)

但上述陈述给出了错误.任何人都可以帮助突出原因吗?

sql-server date isnull

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

如何将方括号括起到已在T-SQL中设置为一个变量值的变量?

我从Net获得了一个脚本,用于计算来自某个SQL Server实例的数据文件和事务日志文件的使用情况.如果没有具有空格的数据库名称或不太长,则脚本可以正常工作.但是,如果数据库名称有空格或太长,我收到错误消息"消息911,级别16,状态1,行1无法在sysdatabases中找到数据库'测试'的条目.找不到具有该名称的条目.确保正确输入名称." 在示例错误消息中,"Test"具有"Test DB"的完整数据库名称,该名称具有空格.请参阅以下代码:

--Script to calculate information about the Data Files

SET QUOTED_IDENTIFIER OFF
SET NOCOUNT ON

DECLARE @dbname varchar(50)
declare @string varchar(250)
set @string = ''

create table #datafilestats
(   Fileid tinyint,
    FileGroup1 tinyint,
    TotalExtents1 dec (8, 2),
    UsedExtents1 dec (8, 2),
    [Name] varchar(50),
    [FileName] sysname )

create table #dbstats
(   dbname varchar(50),
    FileGroupId tinyint,
    FileGroupName varchar(25),
    TotalSizeinMB dec (8, 2),
    UsedSizeinMB dec (8, 2),
    FreeSizeinPercent dec (8, 2))



DECLARE dbnames_cursor CURSOR FOR SELECT name FROM master..sysdatabases
OPEN …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

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

SQL Server 2005 - 构建WHERE子句

我有一个动态构建查询的存储过程.与此查询关联的where子句基于用户选择的过滤器值.不管我做什么,where子句似乎都没有设置.

-- Dynamically build the WHERE clause based on the filters
DECLARE @whereClause as nvarchar(1024)
IF (@hasSpouse > -1)
BEGIN
  IF (@hasSpouse = 0)
    SET @whereClause='p.[HasSpouse]=0'
  ELSE
    SET @whereClause='(p.[HasSpouse]=1 OR p.[HasSpouse] IS NULL)'
  END

  -- Dynamically add the next filter if necessary
  IF (@isVegan > -1)
  BEGIN
    IF (LEN(@whereClause) > 0)
    BEGIN
      SET @whereClause = @whereClause + ' AND '
    END

    IF (@isVegan = 0)
      SET @whereClause = @whereClause + 'c.[IsVegan]=0'
    ELSE
      SET @whereClause = @whereClause + '(c.[IsVegan]=1 OR c.[IsVegan] …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

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

当某些东西不在连接表中时,SQL选择

好.我在一个表中有一些数据,它多次引用另一个表中的一些数据.

表1 - 主客户表Table2 - 用户定义的字段

假设我有一个查询,显示Table1中的客户端ID以及表2中所有附加/使用的"使用的已定义字段"

SELECT t1.Id, t2.udf
FROM Table1 t1
JOIN Table2 t2 ON t1.Id = t2.Index
WHERE t1.EndDate IS NULL AND
      t1.Id = '1234.9876' AND
Run Code Online (Sandbox Code Playgroud)

我会得到以下结果......

ID            UDF
1234.9876     100
1234.9876     110
1234.9876     118
1234.9876     124
1234.9876     198
1234.9876     256
Run Code Online (Sandbox Code Playgroud)

现在,假设我想查询同样的事情,并且只获取客户端的ID,但仅限于t2.udf等于'194'的值不存在.所以,我只是得到

ID           
1234.9876    
Run Code Online (Sandbox Code Playgroud)

...结果是.

t-sql join left-join outer-join sql-server-2008

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

如何批量更新视图?

我的数据库有大约30个视图,其中大多数都引用了该服务器上的另一个数据库(称之为DB1).

现在,在不考虑原因的情况下,我需要将所有这些视图更新到DB2本地服务器上.

我不想在每个视图上手动执行此操作.是否有一些我可以运行的SQL查询将在我的所有视图中用'DB2'替换所有出现的字符串'DB1'?

sql t-sql sql-server-2008

0
推荐指数
2
解决办法
1653
查看次数