回答

收藏

SQL Server-将字符串添加到文本列(等效于concat)

技术问答 技术问答 270 人阅读 | 0 人回复 | 2023-09-14

如何在SQL Server的列中添加字符串?/ Q$ x5 m# w. w/ m1 r/ G. i6 m
UPDATE [myTable] SET [myText]=' '+[myText]
6 t# V: }+ F2 X1 Z1 K" T  p7 H那是行不通的:1 ]9 r8 N. w2 g' [
) P% w# {) Z+ d+ |4 Y& Q$ k: F
数据类型varchar和text在add运算符中不兼容。4 h, I# W5 [* C: X( u3 F
$ O" Y! l, _& @3 o% O2 e+ D
您将在MySQL上使用concat,但是如何在SQL Server上使用concat?% A2 X3 `; m9 e& |  i* j1 g
               
8 _) `# T( p4 c/ u! y解决方案:
" ]! ?& N- K: v  y" u6 p                # O0 m7 b' t. V) A

& \# d, c2 I4 `6 ^/ L. y
' r! A, g& `& d, }2 f                如前所述,最好将列的数据类型设置为nvarchar(max),但如果无法做到,则可以使用cast或convert进行以下操作:# m6 F' M3 M1 k9 g/ l
-- create a test table
% O  t5 C% |& M& F  ~) \( Bcreate table test (9 F  Y3 z. @9 O6 @! v7 M
    a text
- L4 |3 |% G8 l6 ]) O5 i' d. I( O* ~)
) j* p: j# ?2 {3 y/ [" ?-- insert test value5 t7 U5 t" f! h9 |" Z5 B* t/ T
insert into test (a) values ('this is a text')8 O% V) K" h  p5 E/ H- H5 J* u
-- the following does not work !!!4 o& c2 P! ?* u' i( U# S( t% y7 m
update test set a = a + ' and a new text added'
6 x* R! [/ q3 z  Y5 L0 `" `! R7 H2 h-- but this way it works:
# Z7 T' @) p" h2 _8 ~update test set a = cast ( a as nvarchar(max))  + cast (' and a new text added' as nvarchar(max) )
' k. a3 |7 I# l-- test result
% |+ |  d3 A$ k6 D9 Q; X6 Eselect * from test
, S6 [; a8 }! w1 {3 j-- column a contains:( ^  @; I6 I1 Z7 P2 ~( O
this is a text and a new text added
4 T7 [% j( {5 A# o4 m9 ]' j4 d希望能有所帮助
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则