回答

收藏

SQL Server:如何从字段中删除标点符号?

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

有人知道一种从SQL Server的字段中删除标点符号的好方法吗?
; \  T/ A5 t5 n0 u; b0 c我在想: Y/ j" o9 R8 d
UPDATE tblMyTable SET FieldName = REPLACE(REPLACE(REPLACE(FieldName,',',''),'.',''),'''' ,'')
* W5 r9 M3 g, k$ V! J, z但是当我打算删除大量不同的字符时,这似乎有点乏味,例如:!@#$%^&*():“9 ^5 N) s/ S7 h* K9 ^8 w& u
提前致谢: j" ]# o! k# n& t& x( {3 r
               
) R3 E) T' W) b5 q! c5 c解决方案:
0 D9 ?' y1 g$ `  O                % K7 ^0 |- }" o4 T7 M6 }* v
1 q- ^) z; l$ C* N+ p% H. e6 t- l
, Z, C. g9 b& A$ [4 [  I
                理想情况下,您可以使用如上所述的C#+ LINQ之类的应用程序语言来执行此操作。% m8 b/ w6 l/ b# ^
但是,如果您仅想在T-SQL中执行此操作,一种使事情变得更整洁的方法是首先创建一个表,其中包含要删除的所有标点符号。! m8 }  S: {5 `( L% w, h
CREATE TABLE Punctuation
5 j7 o$ T) T% o; i+ J. b  y() ~# i# @  I( l" i" e( U% K
    Symbol VARCHAR(1) NOT NULL
# ]7 ?. M5 }" g( g$ k: ^)
$ F: m; |1 w$ Y8 h( K1 M- SINSERT INTO Punctuation (Symbol) VALUES('''')1 a+ Q' T5 t7 B3 x* B* L
INSERT INTO Punctuation (Symbol) VALUES('-')) |* `! ?# P$ C8 |' @! [
INSERT INTO Punctuation (Symbol) VALUES('.')6 p- i7 {( X6 I% U3 ?1 g
接下来,您可以在SQL中创建一个函数,以从输入字符串中删除所有标点符号。- I" V# s! r" G1 z
CREATE FUNCTION dbo.fn_RemovePunctuation
% r! Y/ `  ^9 @5 r8 o( d$ ^9 s(
) f9 x9 J7 {# Y  z9 m    @InputString VARCHAR(500); G, Z/ ~% d2 W- o
)
! w* r5 Q" f3 W! l  x! j% lRETURNS VARCHAR(500)& l7 s. q' s* B9 i
AS
* u" Z% X/ E, x( hBEGIN9 R* h! f; F7 X5 k
    SELECT4 U! l4 _. P8 X0 _
        @InputString = REPLACE(@InputString, P.Symbol, '')
+ O; q* x: F4 m  J: k    FROM : B9 b3 q5 B+ c" q1 Z
        Punctuation P6 p; m; P8 N; W& }
    RETURN @InputString
6 j+ D" O, l! R  \END2 t7 y8 Q  r  P; e4 |7 p' ~
GO
6 I+ n" [% g* u) Y; j( I! W9 u然后,您可以在UPDATE语句中调用该函数
9 g& Y4 x& R6 z: ]' iUPDATE tblMyTable SET FieldName = dbo.fn_RemovePunctuation(FieldName)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则