标签: t-sql

如何计算SQL varchar中某个子字符串的出现次数?

我有一个列格式为a,b,c,d的列.有没有办法在T-SQL中计算该值中逗号的数量?

t-sql sql-server

137
推荐指数
5
解决办法
19万
查看次数

保持简单以及如何在查询中执行多个CTE

我有这个简单的T-SQL查询,它从表中发出一堆列,并且还连接来自其他相关表的信息.

我的数据模型很简单.我有一个预定的活动,与参与者.我需要知道有多少参与者参加每个活动.

我的解决方案是添加一个CTE,它对预定的事件进行分组并计算参与者的数量.

这将允许我按预定活动加入该信息.保持查询简单.

我喜欢让我的查询简单,但是,如果我将来需要在简单查询期间访问其他临时结果,我该怎么办?

我真的很喜欢它,如果我可以拥有多个CTE,但我不能,对吧?我有什么选择?

我已经在应用程序数据层排除了视图和操作.我更喜欢孤立我的SQL查询.

t-sql sql-server common-table-expression

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

T-SQL:与字符串连接相反 - 如何将字符串拆分为多个记录

可能重复:
SQL中的拆分字符串

我在SQL中看到了几个与字符串连接相关的问题.我想知道你将如何处理相反的问题:将昏迷分隔的字符串拆分为数据行:

可以说我有桌子:

userTypedTags(userID,commaSeparatedTags) 'one entry per user
tags(tagID,name)
Run Code Online (Sandbox Code Playgroud)

并希望将数据插入表中

userTag(userID,tagID) 'multiple entries per user
Run Code Online (Sandbox Code Playgroud)

灵感来自数据库中没有哪些标签?

编辑

谢谢你的答案,实际上有一个值得接受,但我只能选择一个,而Cade Roux提出的递归解决方案对我来说似乎很干净.它适用于SQL Server 2005及更高版本.

对于早期版本的SQL Server,可以使用miies提供的解决方案.对于使用文本数据类型,wcm answer会很有帮助.再次感谢.

t-sql sql-server sql-server-2005

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

GRANT EXECUTE到所有存储过程

以下命令是否有效地为用户"MyUser"授予了在数据库中执行所有存储过程的权限?

GRANT EXECUTE TO [MyDomain\MyUser]
Run Code Online (Sandbox Code Playgroud)

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

136
推荐指数
3
解决办法
24万
查看次数

CTE和SubQuery之间的区别?

从这篇文章如何在以下过程中使用ROW_NUMBER?

有两个版本的答案,其中一个使用a SubQuery,另一个使用a CTE来解决相同的问题.

那么,使用CTE (Common Table Expression)over as 的优点是什么ub-query(因此,查询实际上更具可读性)

使用CTEover sub select 的唯一优点是我可以实际命名子查询.当CTE用作简单(非递归)CTE时,这两者之间是否存在其他差异

sql t-sql sql-server subquery common-table-expression

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

更改表添加列语法

我正在尝试以编程方式将一个标识列添加到表Employees.不确定我的语法错误.

ALTER TABLE Employees
  ADD COLUMN EmployeeID int NOT NULL IDENTITY (1, 1)

ALTER TABLE Employees ADD CONSTRAINT
    PK_Employees PRIMARY KEY CLUSTERED 
    (
      EmployeeID
    ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
    ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我尝试导出脚本,但SQL Mgmt Studio会对整个Temp Table进行重命名.

更新:我认为它在第一个语句中窒息"关键字'COLUMN'附近的语法不正确."

sql t-sql sql-server ddl

135
推荐指数
3
解决办法
20万
查看次数

133
推荐指数
11
解决办法
39万
查看次数

SQL Server 2008中的CROSS JOIN与INNER JOIN

CROSS JOIN和之间有什么区别INNER JOIN

交叉加入:

SELECT 
    Movies.CustomerID, Movies.Movie, Customers.Age, 
    Customers.Gender, Customers.[Education Level], 
    Customers.[Internet Connection], Customers.[Marital Status], 
FROM   
    Customers 
CROSS JOIN 
    Movies
Run Code Online (Sandbox Code Playgroud)

内部联接:

SELECT 
    Movies.CustomerID, Movies.Movie, Customers.Age, 
    Customers.Gender, Customers.[Education Level], 
    Customers.[Internet Connection], Customers.[Marital Status]
FROM   
    Customers 
INNER JOIN 
    Movies ON Customers.CustomerID = Movies.CustomerID
Run Code Online (Sandbox Code Playgroud)

哪一个更好,为什么我会使用其中一个?

sql t-sql sql-server cross-join sql-server-2008

133
推荐指数
7
解决办法
35万
查看次数

什么是"批次",为什么使用GO?

我已阅读并阅读过MSDN等等.好的,它标志着一批的结束.

什么定义批次?当我粘贴一堆脚本同时运行时,我不明白为什么我需要去.

我从未理解过GO.任何人都可以更好地解释这个,当我需要使用它(在多少或什么类型的交易之后)?

例如,为什么每次更新后我都需要GO:

 UPDATE [Country]
   SET [CountryCode] = 'IL'
 WHERE code = 'IL'

 GO

 UPDATE [Country]
   SET [CountryCode] = 'PT'
 WHERE code = 'PT'
Run Code Online (Sandbox Code Playgroud)

t-sql

132
推荐指数
4
解决办法
6万
查看次数

SQL Server字符串或二进制数据将被截断

我参与了一个数据迁移项目.当我尝试将数据从一个表插入另一个表(SQL Server 2005)时,我收到以下错误:

消息8152,级别16,状态13,行1
字符串或二进制数据将被截断.

源数据列与数据类型匹配,并且在目标表列的长度定义内,因此我不知道可能导致此错误的原因.

t-sql sql-server migration data-migration sql-server-2005

132
推荐指数
8
解决办法
43万
查看次数