Sql 如何在as关键字后按单元替换具有单元字的特征名称?
我使用SQL Server 2012时面临一个问题:我无法将包含Unit word的功能替换为Unit only 所以这段代码返回Sql 如何在as关键字后按单元替换具有单元字的特征名称?,sql,tsql,stored-procedures,sql-server-2012,dynamic-sql,Sql,Tsql,Stored Procedures,Sql Server 2012,Dynamic Sql,我使用SQL Server 2012时面临一个问题:我无法将包含Unit word的功能替换为Unit only 所以这段代码返回 'FamilyUnit' as [FamilyUnit] 当我需要它的时候 'FamilyUnit' as [Unit] 如果包含单位,则该词应仅为单位 更改将在AS关键字之后进行 create table #SplitNumberAndUnitsFinal ( DKFeatureName nvarchar(100), DisplayOr
'FamilyUnit' as [FamilyUnit]
当我需要它的时候
'FamilyUnit' as [Unit]
如果包含单位
,则该词应仅为单位
更改将在AS
关键字之后进行
create table #SplitNumberAndUnitsFinal
(
DKFeatureName nvarchar(100),
DisplayOrder int
)
insert into #SplitNumberAndUnitsFinal (DKFeatureName, DisplayOrder)
values ('package', 1), ('packageUnit', 1),
('Family', 2), ('FamilyUnit', 2),
('parts', 3), ('partsUnit', 3)
DECLARE @Header nvarchar(max) =
(SELECT SUBSTRING((SELECT ', ''' + DKFeatureName + ''' AS ['+ DKFeatureName +']' AS [text()]
FROM #SplitNumberAndUnitsFinal
GROUP BY DKFeatureName
ORDER BY MIN(DisplayOrder)
FOR XML PATH ('')), 2, 10000) [Columns])
PRINT @Header
预期结果是将包含Unit
的所有单词仅替换为Unit
,因此输出应为:
'package' as [package],
'packageUnit' as [Unit],
'Family' as [Family],
'FamilyUnit' as [Unit],
'parts' as [parts],
'partsUnit' as [Unit]
使用
CASE
表达式:
DECLARE @Header nvarchar(max) =
(SELECT SUBSTRING((SELECT ', ''' + DKFeatureName + ''' AS '
+ QUOTENAME(CASE WHEN DKFeatureName LIKE '%Unit' THEN 'Unit' ELSE DKFeatureName END) AS [text()]
FROM #SplitNumberAndUnitsFinal
GROUP BY DKFeatureName
ORDER BY MIN(DisplayOrder)
FOR XML PATH ('')), 2, 10000) [Columns])
对于引用标识符,使用QUOTENAME
函数而不是添加[]
使用
大小写
表达式:
DECLARE @Header nvarchar(max) =
(SELECT SUBSTRING((SELECT ', ''' + DKFeatureName + ''' AS '
+ QUOTENAME(CASE WHEN DKFeatureName LIKE '%Unit' THEN 'Unit' ELSE DKFeatureName END) AS [text()]
FROM #SplitNumberAndUnitsFinal
GROUP BY DKFeatureName
ORDER BY MIN(DisplayOrder)
FOR XML PATH ('')), 2, 10000) [Columns])
对于引用标识符,使用QUOTENAME
函数而不是添加[]
感谢您的回复如果我之前也需要更改,请将样本“packageUnit”更改为[Unit]我需要将其作为“Unit”更改为[Unit],那么如何更改感谢您的回复如果我之前也需要更改,请将样本“packageUnit”更改为[Unit]我需要将其作为[Unit]更改为“Unit”那么,如何将之前仅更改此修改部分作为其不包含单元的位置changed@aboelham您可以使用相同的大小写表达式,而不使用QUOTENAME,而不使用第一个DKFeatureName-只使用前面的修改部分,因为它不包含单元changed@aboelham您可以使用相同的大小写表达式,而不使用QUOTENAME而不是第一个特征名-