Sql 如何在as关键字后按单元替换具有单元字的特征名称?

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

我使用SQL Server 2012时面临一个问题:我无法将包含Unit word的功能替换为Unit only

所以这段代码返回

'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而不是第一个特征名-