T-SQL Server 2012 QUOTENAME 问题与第一个字符串实例
T-SQL Server 2012 QUOTENAME issue with first instance of string
我正在尝试使用 QUOTENAME 将返回的字符串的每个部分括在方括号中,但似乎无法找到将字符串的第一个实例括起来的解决方案?
CREATE TABLE dbo.Products
(
ProductID INT PRIMARY KEY,
Name NVARCHAR(255) NOT NULL UNIQUE
/* other columns */
);
INSERT dbo.Products VALUES
(1, N'foo'),
(2, N'bar'),
(3, N'kin'),
(4, N'blat');
DECLARE @Split varchar (1000)
SET @Split = ''
SELECT @Split =
CASE WHEN @Split = ''
THEN Name
ELSE @Split + coalesce(',' + QUOTENAME(Name),'')
END
FROM dbo.Products
PRINT @Split
结果:
bar,[blat],[foo],[kin]
我需要 'bar' 也用 [] 括起来。
您连接 dbo.Products 的所有值的方法最好像这样完成:
SELECT STUFF(
(
SELECT ',' + QUOTENAME(Name)
FROM dbo.Products
FOR XML PATH('')
),1,1,'');
但要回答您的实际问题:
您也必须首先使用 QUOTENAME
!
SELECT @Split =
CASE WHEN @Split = ''
THEN Name <-- Use QUOTENAME here as well
ELSE @Split + coalesce(',' + QUOTENAME(Name),'')
在您的案例陈述中,您缺少 quotename()
WHEN @Split = ''
THEN QUOTENAME(Name)
希望对您有所帮助。
最好的问候,
卡尔提克
我正在尝试使用 QUOTENAME 将返回的字符串的每个部分括在方括号中,但似乎无法找到将字符串的第一个实例括起来的解决方案?
CREATE TABLE dbo.Products
(
ProductID INT PRIMARY KEY,
Name NVARCHAR(255) NOT NULL UNIQUE
/* other columns */
);
INSERT dbo.Products VALUES
(1, N'foo'),
(2, N'bar'),
(3, N'kin'),
(4, N'blat');
DECLARE @Split varchar (1000)
SET @Split = ''
SELECT @Split =
CASE WHEN @Split = ''
THEN Name
ELSE @Split + coalesce(',' + QUOTENAME(Name),'')
END
FROM dbo.Products
PRINT @Split
结果:
bar,[blat],[foo],[kin]
我需要 'bar' 也用 [] 括起来。
您连接 dbo.Products 的所有值的方法最好像这样完成:
SELECT STUFF(
(
SELECT ',' + QUOTENAME(Name)
FROM dbo.Products
FOR XML PATH('')
),1,1,'');
但要回答您的实际问题:
您也必须首先使用 QUOTENAME
!
SELECT @Split =
CASE WHEN @Split = ''
THEN Name <-- Use QUOTENAME here as well
ELSE @Split + coalesce(',' + QUOTENAME(Name),'')
在您的案例陈述中,您缺少 quotename()
WHEN @Split = ''
THEN QUOTENAME(Name)
希望对您有所帮助。
最好的问候,
卡尔提克