标签: t-sql

在SQL Server中更改列大小

如何salaryemployee表中列的列大小更改numeric(18,0)numeric(22,5)

sql t-sql database sql-server alter-table

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

如何从TSQL日期时间字段获取YYYY-MM-DD格式的日期?

如何从YYYY-MM-DD格式的SQL Server中检索日期?我需要这个与SQL Server 2000及更高版本一起工作.有没有一种简单的方法在SQL Server中执行此操作,还是在检索结果集后以编程方式更容易地进行转换?

我已阅读Microsoft Technet上的CAST和CONVERT,但未列出我想要的格式,并且不能更改日期格式.

t-sql sql-server

252
推荐指数
13
解决办法
107万
查看次数

如何检查SQL Server中是否存在数据库?

使用TSQL检查SQL Server上是否存在数据库的理想方法是什么?似乎有多种方法可以实现这一点.

t-sql database sql-server

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

在一列上选择DISTINCT

使用SQL Server,我有......

ID  SKU     PRODUCT
=======================
1   FOO-23  Orange
2   BAR-23  Orange
3   FOO-24  Apple
4   FOO-25  Orange
Run Code Online (Sandbox Code Playgroud)

我想要

1   FOO-23  Orange
3   FOO-24  Apple
Run Code Online (Sandbox Code Playgroud)

这个问题不是让我在那里.如何在一列上选择DISTINCT?

SELECT 
[ID],[SKU],[PRODUCT]
FROM [TestData] 
WHERE ([PRODUCT] = 
(SELECT DISTINCT [PRODUCT] FROM [TestData] WHERE ([SKU] LIKE 'FOO-%')) 
ORDER BY [ID]
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server distinct

248
推荐指数
7
解决办法
38万
查看次数

如何在SQL Server中创建外键?

我从来没有为SQL Server"手动编码"对象创建代码,并且外键修改在SQL Server和Postgres之间看似不同.这是我的sql到目前为止:

drop table exams;
drop table question_bank;
drop table anwser_bank;

create table exams
(
    exam_id uniqueidentifier primary key,
    exam_name varchar(50),
);
create table question_bank
(
    question_id uniqueidentifier primary key,
    question_exam_id uniqueidentifier not null,
    question_text varchar(1024) not null,
    question_point_value decimal,
    constraint question_exam_id foreign key references exams(exam_id)
);
create table anwser_bank
(
    anwser_id           uniqueidentifier primary key,
    anwser_question_id  uniqueidentifier,
    anwser_text         varchar(1024),
    anwser_is_correct   bit
);
Run Code Online (Sandbox Code Playgroud)

当我运行查询时,我收到此错误:

消息8139,级别16,状态0,行9外键中的引用列数与引用列的数量不同,表'question_bank'.

你能发现错误吗?

sql t-sql sql-server

240
推荐指数
9
解决办法
44万
查看次数

需要列出SQL Server数据库中具有表名和表模式的所有触发器

我需要使用表名和表的模式列出SQL Server数据库中的所有触发器.

我几乎在这里:

SELECT trigger_name = name, trigger_owner = USER_NAME(uid),table_schema = , table_name = OBJECT_NAME(parent_obj),
  isupdate = OBJECTPROPERTY( id, 'ExecIsUpdateTrigger'), isdelete = OBJECTPROPERTY( id, 'ExecIsDeleteTrigger'),
  isinsert = OBJECTPROPERTY( id, 'ExecIsInsertTrigger'), isafter = OBJECTPROPERTY( id, 'ExecIsAfterTrigger'),
  isinsteadof = OBJECTPROPERTY( id, 'ExecIsInsteadOfTrigger'),
  [disabled] = OBJECTPROPERTY(id, 'ExecIsTriggerDisabled') 
FROM sysobjects INNER JOIN sysusers ON sysobjects.uid = sysusers.uid
WHERE type = 'TR'
Run Code Online (Sandbox Code Playgroud)

我只需要获取表的模式.

sql t-sql database sql-server triggers

235
推荐指数
8
解决办法
41万
查看次数

SQL Server SELECT INTO @variable?

我在我的一个Sql(2008)存储过程中有以下代码执行完全正常:

    CREATE PROCEDURE [dbo].[Item_AddItem]
        @CustomerId uniqueidentifier,
        @Description nvarchar(100),
        @Type int,
        @Username nvarchar(100),
    AS
    BEGIN

        DECLARE @TopRelatedItemId uniqueidentifier;
        SET @TopRelatedItemId = 
        (
           SELECT top(1) RelatedItemId 
           FROM RelatedItems 
           WHERE CustomerId = @CustomerId
        ) 

        DECLARE @TempItem TABLE
        (
            ItemId uniqueidentifier,
            CustomerId uniqueidentifier,
            Description nvarchar(100),
            Type int,
            Username nvarchar(100),
            TimeStamp datetime
        );

        INSERT INTO Item
        OUTPUT INSERTED.* INTO @TempItem
        SELECT NEWID(), @CustomerId, @Description, @Type, @Username, GETDATE()

        SELECT
            ItemId,
            CustomerId,
            @TopRelatedItemId,
            Description,
            Type,
            Username,
            TimeStamp
        FROM
            @TempItem
END
GO
Run Code Online (Sandbox Code Playgroud)

所以你们的问题是有可能做一些事情:

DECLARE @TempCustomer TABLE
(
   CustomerId …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008

235
推荐指数
4
解决办法
75万
查看次数

有没有办法在不使用游标的情况下在TSQL中循环表变量?

假设我有以下简单的表变量:

declare @databases table
(
    DatabaseID    int,
    Name        varchar(15),   
    Server      varchar(15)
)
-- insert a bunch rows into @databases
Run Code Online (Sandbox Code Playgroud)

如果我想遍历行,是声明和使用游标我唯一的选择吗?还有另外一种方法吗?

t-sql sql-server loops

234
推荐指数
9
解决办法
61万
查看次数

NOT IN子句和NULL值

当我得到不同的记录计数时,出现了这个问题,我认为是使用not in where约束的相同查询,另一个是a left join.not in约束中的表有一个空值(坏数据),导致该查询返回0个记录的计数.我有点理解为什么,但我可以使用一些帮助来完全理解这个概念.

简单地说,为什么查询A返回结果但B不返回?

A: select 'true' where 3 in (1, 2, 3, null)
B: select 'true' where 3 not in (1, 2, null)
Run Code Online (Sandbox Code Playgroud)

这是在SQL Server 2005上.我还发现调用set ansi_nulls off导致B返回结果.

sql t-sql sql-server null notin

233
推荐指数
10
解决办法
26万
查看次数

使用存储过程检查字符串是否包含SQL Server 2005中的子字符串

我有一根绳子,@mainString = 'CATCH ME IF YOU CAN'.我想检查这个词是否在ME里面@mainString.

如何在SQL中检查字符串是否具有特定的子字符串?

t-sql sql-server string stored-procedures sql-server-2005

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