标签: t-sql

更改列:null为非null

我有一个表有几个可以为空的整数列.由于多种原因,这是不可取的,所以我希望将所有空值更新为0,然后将这些列设置为NOT NULL.除了将空值更改为0,必须保留数据.

我正在寻找特定的SQL语法来将列(调用它ColumnA)改为" not null".假设数据已更新为不包含空值.

使用SQL Server 2000.

t-sql sql-server null alter-table alter-column

1177
推荐指数
8
解决办法
136万
查看次数

1090
推荐指数
30
解决办法
196万
查看次数

检查SQL Server中是否存在表

我希望这是关于如何使用SQL语句检查SQL Server 2000/2005中是否存在表的最终讨论.

当谷歌找到答案时,你会得到很多不同的答案.这样做是否有正式/后向和前向兼容的方式?

这有两种可行的方法.这两者中哪一个是标准/最佳方式?

第一种方式:

IF EXISTS (SELECT 1 
           FROM INFORMATION_SCHEMA.TABLES 
           WHERE TABLE_TYPE='BASE TABLE' 
           AND TABLE_NAME='mytablename') 
   SELECT 1 AS res ELSE SELECT 0 AS res;
Run Code Online (Sandbox Code Playgroud)

第二种方式:

IF OBJECT_ID (N'mytablename', N'U') IS NOT NULL 
   SELECT 1 AS res ELSE SELECT 0 AS res;
Run Code Online (Sandbox Code Playgroud)

MySQL提供简单

SHOW TABLES LIKE '%tablename%'; 
Run Code Online (Sandbox Code Playgroud)

声明.我正在寻找类似的东西.

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

1068
推荐指数
14
解决办法
116万
查看次数

获取插入行的标识的最佳方法是什么?

IDENTITY插入行的最佳方法是什么?

我知道@@IDENTITYIDENT_CURRENTSCOPE_IDENTITY,但不明白连接到每个利弊.

有人可以解释一下这些差异,以及何时应该使用它们?

sql t-sql sql-server

1056
推荐指数
10
解决办法
80万
查看次数

什么时候应该使用交叉申请而不是内部联接?

使用CROSS APPLY的主要目的是什么?

我已经阅读(模糊地,通过互联网上的帖子),cross apply如果你正在进行分区,那么在选择大型数据集时可以更有效率.(寻找灵感)

我也知道CROSS APPLY 不需要UDF作为右表.

在大多数INNER JOIN查询(一对多关系)中,我可以重写它们以供使用CROSS APPLY,但它们总是给我相同的执行计划.

任何人都可以给我一个很好的例子,告诉我什么时候能有效的CROSS APPLY情况INNER JOIN


编辑:

这是一个简单的例子,执行计划完全相同.(告诉我一个他们不同的地方,哪里cross apply更快/更有效率)

create table Company (
    companyId int identity(1,1)
,   companyName varchar(100)
,   zipcode varchar(10) 
,   constraint PK_Company primary key (companyId)
)
GO

create table Person (
    personId int identity(1,1)
,   personName varchar(100)
,   companyId int
,   constraint FK_Person_CompanyId foreign key (companyId) references dbo.Company(companyId)
,   constraint PK_Person primary key (personId)
) …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server performance cross-apply

890
推荐指数
11
解决办法
68万
查看次数

如何在SQL Server中转义单引号?

我正在尝试将insert一些文本数据放入SQL Server9中的表中.

该文本包括单引号(').

我怎么逃避?

我尝试使用两个单引号,但它给我一些错误.

例如. insert into my_table values('hi, my name''s tim.');

sql t-sql sql-server delimiter single-quotes

882
推荐指数
7
解决办法
103万
查看次数

如何使用TSQL获取数据库中所有表的列表?

获取SQL Server上特定数据库中所有表的名称的最佳方法是什么?

t-sql sql-server database-table

867
推荐指数
14
解决办法
173万
查看次数

如何使用T-SQL临时禁用外键约束?

是否禁用和启用SQL Server支持的外键约束?或者是我唯一的选择drop,然后重新create约束?

t-sql sql-server constraints foreign-keys

805
推荐指数
10
解决办法
59万
查看次数

在SQL Server中使用JOIN更新表?

我想更新表中的列,在其他表上进行连接,例如:

UPDATE table1 a 
INNER JOIN table2 b ON a.commonfield = b.[common field] 
SET a.CalculatedColumn= b.[Calculated Column]
WHERE 
    b.[common field]= a.commonfield
AND a.BatchNO = '110'
Run Code Online (Sandbox Code Playgroud)

但它抱怨:

消息170,级别15,状态1,行2
第2行:'a'附近的语法不正确.

这有什么不对?

t-sql sql-server join sql-update

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

SQL Server中的函数与存储过程

我一直在学习函数和存储过程很长一段时间,但我不知道为什么以及何时应该使用函数或存储过程.他们看起来和我一样,也许是因为我对此有点新手.

有人可以告诉我为什么吗?

sql t-sql sql-server stored-procedures sql-function

801
推荐指数
13
解决办法
64万
查看次数