|
我知道这个线程到处都是,但是,情况稍有不同。在我公司使用的套件中,我对SQL的访问权限有限,并且无法运行带有函数等的复杂代码。我有一个SQL查询,该查询将多列数据编译为一列,并使用group2 x; G4 P. I/ J: W
by子句淘汰了多重性。但是,由于存在差异,因此这导致所有结果以大写形式返回。我现在必须将其改回原来的样子,即每个单词的首字母大写。我需要一种非常简洁的方法。该套件使用VBScript和XML,但是此特定问题更为复杂,因为我无法在客户端上编辑结果,该套件只是要求显示列名(填充一个下拉菜单)。有什么建议?谢谢!4 f) g& Z3 i8 h! `3 w0 g6 S
询问:2 j, g! @8 ^4 @! f& o+ w U
Select Insurance 8 `5 ?( H( B2 R% v# D; P
From/ E' w* n8 q* x0 H
(Select Ins1 as Insurance
7 W2 x1 _ ~+ @- O1 O+ fFrom InsAuth2
' ?, h) a; W; r0 Y, u8 cWHERE Ins1 IS NOT NULL
7 ~ e$ r1 H0 ?3 t* S: HUnion All
! }3 T- v$ C: J) ]$ \' k: f1 l/ D! Z5 dSelect Ins2 as Insurance1 r/ ]$ n* B; }3 Z7 Q
From InsAuth2, f5 w; d8 F) O8 B* R0 n2 U5 ?
WHERE Ins2 IS NOT NULL. a% J. g e3 \" D3 _, `% x+ M
Union All1 d: D# O& U9 Q/ A6 b
Select Ins3 as Insurance% e" p7 w }0 N) d" ^; V# j
From InsAuth2' @8 S9 V- s- i* c$ y6 ?4 G* f4 Q7 q# n: A
WHERE Ins3 IS NOT NULL1 T2 K6 J! G. Q9 B( s8 j' I
Union All! O6 C: T6 e$ V8 V1 H
Select Ins4 as Insurance, Y8 q/ i2 p- b( W! \8 X6 j- }
From InsAuth2' I, t1 J# B: C8 J9 u- l) p
WHERE Ins4 IS NOT NULL0 c9 l- _1 D1 V( b6 ?* w
Union All
+ A% g' I5 Y: }0 Z r' L, N$ n. z$ @Select Ins5 as Insurance, c8 r t# G2 i0 A( Y, o2 {
From InsAuth2
/ F, E6 R9 L' l, Q' w( HWHERE Ins5 IS NOT NULL) as table5 B/ {* X8 W8 C; C: I( t
Group By Insurance4 s1 `$ [ ] ?! W% H7 \2 F
: q# E& s9 f# q6 @8 a" L解决方案:- s a6 D' H" J
% V* [' e5 n* c W) o0 A, j
; j/ s% ^& j( ^7 }; q; Q
7 w0 s# N. z) \/ ^ 您没有说这是针对SQL Server的,但是如果有的话,这里是一个解决方案。
5 j8 M$ A$ }5 d* k这是一个工作示例。将表变量替换为@T您拥有的查询。
% r/ G* h& \7 C- n3 _! H- p) jdeclare @T table(Insurance varchar(max))
/ C; p. l+ h. P7 ?insert into @T values! x+ H( d R2 ]) U
('BENGT MIKAEL ERIKSSON'),6 _0 s! x# h: B$ J
('XMLCHARTEST&''"')' N- [" ^/ ?- i' }: y3 V
select (
# E4 z, Z* C* V& R- D+ } select upper(T.N.value('.', 'char(1)'))+: D5 u4 G! p5 h. }" e }7 r
lower(stuff(T.N.value('.', 'varchar(max)'), 1, 1, ''))+' '7 v" Q$ C+ {) D; e, X5 F
from X.InsXML.nodes('/N') as T(N)5 y, c$ e- A8 v2 R8 Z$ q
for xml path(''), type& h; L: R) H- }! c
).value('.', 'varchar(max)') as Insurance
0 h7 R [ N5 t' d- R* F, }8 Nfrom
' s/ \( W2 T w% I& k# P: Z. Y (
& B b. G w) s1 S select cast(''+replace(( ^: o% Q) [: k7 x8 _ J0 G
replace(
8 m4 w6 e8 I" `, v/ C replace(Insurance,
9 X- G* B2 z% }# _) W% D '&', '&'),
Y7 t. X, ^) P# d '')+'' as xml) as InsXML
" s0 J7 \1 a% H from @T
0 O% h/ H3 l& X) N r! y ) as X6 N. C% R% a+ u# ~2 L: a
结果:. N, f, p" h' ^* i @
Insurance: Q- v# {# Q; X4 o: T) H
----------------------4 ]# R" y! \5 p6 k
Bengt Mikael Eriksson
! I# ^& ?/ u. L8 A- JXmlchartest&'" |
|