我有一个列格式为a,b,c,d的列.有没有办法在T-SQL中计算该值中逗号的数量?
我有这个简单的T-SQL查询,它从表中发出一堆列,并且还连接来自其他相关表的信息.
我的数据模型很简单.我有一个预定的活动,与参与者.我需要知道有多少参与者参加每个活动.
我的解决方案是添加一个CTE,它对预定的事件进行分组并计算参与者的数量.
这将允许我按预定活动加入该信息.保持查询简单.
我喜欢让我的查询简单,但是,如果我将来需要在简单查询期间访问其他临时结果,我该怎么办?
我真的很喜欢它,如果我可以拥有多个CTE,但我不能,对吧?我有什么选择?
我已经在应用程序数据层排除了视图和操作.我更喜欢孤立我的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会很有帮助.再次感谢.
以下命令是否有效地为用户"MyUser"授予了在数据库中执行所有存储过程的权限?
GRANT EXECUTE TO [MyDomain\MyUser]
Run Code Online (Sandbox Code Playgroud) 有两个版本的答案,其中一个使用a SubQuery,另一个使用a CTE来解决相同的问题.
那么,使用CTE (Common Table Expression)over as 的优点是什么ub-query(因此,查询实际上更具可读性)
使用CTEover sub select 的唯一优点是我可以实际命名子查询.当CTE用作简单(非递归)CTE时,这两者之间是否存在其他差异?
我正在尝试以编程方式将一个标识列添加到表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'附近的语法不正确."
如何删除字符串中的最后一个字符T-SQL?
例如:
'TEST STRING'
Run Code Online (Sandbox Code Playgroud)
回来:
'TEST STRIN'
Run Code Online (Sandbox Code Playgroud) 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)
哪一个更好,为什么我会使用其中一个?
我已阅读并阅读过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) 我参与了一个数据迁移项目.当我尝试将数据从一个表插入另一个表(SQL Server 2005)时,我收到以下错误:
消息8152,级别16,状态13,行1
字符串或二进制数据将被截断.
源数据列与数据类型匹配,并且在目标表列的长度定义内,因此我不知道可能导致此错误的原因.