我知道这个线程到处都存在,但是,这是一个略有不同的情况。
在我公司使用的套件中,我对 SQL 的访问权限有限,无法运行具有函数等的复杂代码。我有一个 SQL 查询,将多个列上的数据编译为一列,并使用 group by 子句来消除多重性。然而,这导致所有结果都以大写形式返回,因为存在变化。我现在必须将其改回应有的样子,即每个单词的第一个字母大写。我需要一种非常简洁的方法来做到这一点。该套件使用 VBScript 和 XML,但这个特定问题更加复杂,因为我无法在客户端编辑结果,该套件仅要求显示列名称(填充下拉菜单)。有什么建议么?谢谢!
Query:
Select Insurance
From
(Select Ins1 as Insurance
From InsAuth2
WHERE Ins1 IS NOT NULL
Union All
Select Ins2 as Insurance
From InsAuth2
WHERE Ins2 IS NOT NULL
Union All
Select Ins3 as Insurance
From InsAuth2
WHERE Ins3 IS NOT NULL
Union All
Select Ins4 as Insurance
From InsAuth2
WHERE Ins4 IS NOT NULL
Union All
Select Ins5 as Insurance
From InsAuth2
WHERE Ins5 IS NOT NULL) as table
Group By Insurance
您没有说这是针对 SQL Server 的,但这里有一个解决方案,以防万一。
这是一个工作示例。替换表变量@T
与你的查询。
declare @T table(Insurance varchar(max))
insert into @T values
('BENGT MIKAEL ERIKSSON'),
('XMLCHARTEST<>&''"')
select (
select upper(T.N.value('.', 'char(1)'))+
lower(stuff(T.N.value('.', 'varchar(max)'), 1, 1, ''))+' '
from X.InsXML.nodes('/N') as T(N)
for xml path(''), type
).value('.', 'varchar(max)') as Insurance
from
(
select cast('<N>'+replace(
replace(
replace(Insurance,
'&', '&'),
'<', '<'),
' ','</N><N>')+'</N>' as xml) as InsXML
from @T
) as X
Result:
Insurance
----------------------
Bengt Mikael Eriksson
Xmlchartest<>&'"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)