如何用 Unit Only After 作为关键字替换 Feature Name have Unit word?
How to replace Feature Name have Unit word by Unit Only After as Keyword?
我使用 SQL Server 2012 并遇到一个问题:我无法将包含 Unit 单词的功能替换为仅 Unit。
所以这个代码returns
'FamilyUnit' as [FamilyUnit]
虽然我需要它
'FamilyUnit' as [Unit]
作为关键字后的意思词如果包含Unit
,则应该只有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
函数比添加 []
更安全
我使用 SQL Server 2012 并遇到一个问题:我无法将包含 Unit 单词的功能替换为仅 Unit。
所以这个代码returns
'FamilyUnit' as [FamilyUnit]
虽然我需要它
'FamilyUnit' as [Unit]
作为关键字后的意思词如果包含Unit
,则应该只有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
函数比添加 []