标签: t-sql

SQL甚至TSQL图灵是否完整?

今天在办公室提出了这个问题.我没有计划做这样的事情,但理论上你可以在SQL中编写一个编译器吗?乍一看,在我看来,虽然对于许多类型的问题非常麻烦,但我觉得它是完整的.

如果它没有完成,那么它需要什么呢?

注意:我不想做任何事情,比如在SQL中编写编译器,我知道这样做会很愚蠢,所以如果我们能够避免讨论,我会很感激.

sql t-sql language-features programming-languages

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

在SQL中更改表的架构名称

我想Employees在数据库中更改表的模式名称.在当前表Employees数据库模式名称是dbo我想要更改为exe.我该怎么做 ?

例:

dbo.Employees
Run Code Online (Sandbox Code Playgroud)

exe.Employees
Run Code Online (Sandbox Code Playgroud)

我试过这个查询:

ALTER SCHEMA exe TRANSFER dbo.Employees
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误:

无法更改架构'exe',因为它不存在或您没有权限.

我错过了什么?

sql t-sql sql-server schema

157
推荐指数
6
解决办法
24万
查看次数

插入更新触发器如何确定是否插入或更新

我需要在表A上编写一个Insert,Update Trigger,它将删除表B中的所有行,其中一列(比如Desc)的值类似于表A列中插入/更新的值(比如Col1).我将如何编写它以便我可以处理Update和Insert案例.如何确定是否为更新或插入执行了触发器.

t-sql sql-server triggers

155
推荐指数
10
解决办法
45万
查看次数

索引中列的顺序有多重要?

我听说你应该在索引声明的开头放置最具选择性的列.例:

CREATE NONCLUSTERED INDEX MyINDX on Table1
(
   MostSelective,
   SecondMost,
   Least
)
Run Code Online (Sandbox Code Playgroud)

首先,我说的是正确的吗?如果是这样,我可能会通过重新排列索引中列的顺序来看到性能上的巨大差异,还是更像是"很好做"的做法?

我问的原因是因为在通过DTA进行查询后,它建议我创建一个索引,其中几乎所有列都与现有索引相同,只是顺序不同.我正在考虑将缺少的列添加到现有索引并调用它.思考?

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

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

引用WHERE子句中的列别名

SELECT logcount, logUserID, maxlogtm
   , DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE daysdiff > 120
Run Code Online (Sandbox Code Playgroud)

我明白了

"无效的列名称daysdiff".

Maxlogtm是一个日期时间字段.这是让我疯狂的小东西.

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

155
推荐指数
7
解决办法
18万
查看次数

如何在SQL Server 2008中检查用户定义表类型的存在?

我有一个用户定义的表类型.我想在使用OBJECT_ID(name, type)函数编辑补丁之前检查它是否存在.

什么type枚举应传递用户定义的表类型?

N'U' 喜欢用户定义的表不起作用,即 IF OBJECT_ID(N'MyType', N'U') IS NOT NULL

sql t-sql sql-server user-defined-types sql-server-2008

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

SQL JOIN vs IN性能?

我有一个案例,使用JOIN或IN将给我正确的结果......通常有更好的性能,为什么?它取决于您运行的数据库服务器多少钱?(仅供参考我使用的是MSSQL)

sql t-sql sql-server performance

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

表名作为变量

我正在尝试执行此查询:

declare @tablename varchar(50)
set @tablename = 'test'
select * from @tablename
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

Msg 1087,Level 16,State 1,Line 5

必须声明表变量"@tablename".

什么是动态填充表名的正确方法?

sql t-sql sql-server variable-names tablename

153
推荐指数
6
解决办法
38万
查看次数

计算两个日期之间的工作日

如何计算SQL Server中两个日期之间的工作日数?

星期一到星期五,它必须是T-SQL.

sql t-sql date

151
推荐指数
9
解决办法
32万
查看次数

更好的修剪SQL Server中前导零的技术?

我一直在使用一段时间:

SUBSTRING(str_col, PATINDEX('%[^0]%', str_col), LEN(str_col))
Run Code Online (Sandbox Code Playgroud)

但是最近,我发现所有"0"字符的列都有问题,例如'00000000',因为它永远找不到匹配的非"0"字符.

我见过的另一种技术是使用TRIM:

REPLACE(LTRIM(REPLACE(str_col, '0', ' ')), ' ', '0')
Run Code Online (Sandbox Code Playgroud)

如果存在嵌入空格,则会出现问题,因为当空格变回"0"时,它们将变为"0".

我试图避免使用标量UDF.我在SQL Server 2005中发现了很多UDF的性能问题.

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

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