Hur du tar ut bokstäver men lämna numeriska tecken i SQL

Microsoft SQL &#039s Transact- SQL har förmågan att ta ut bokstäver men lämna numeriska tecken i en sträng , det bara kräver att en användardefinierad funktion . Du kanske vill göra detta i de fall där det finns ett numeriskt fält i databasen och du vill skydda integriteten i din INSERT-sats genom att städa upp data innan du försöker infoga . I de flesta fall kommer hela INSERT-sats att misslyckas om det finns en bokstav i ett numeriskt fält
1
I Microsoft SQL , skapa en användardefinierad funktion som : .

CREATE FUNCTION DBO . UDF_NumericOnlyChars

(

@ sträng VARCHAR (8000 )

)

RETURER VARCHAR (8000 )

AS

BEGIN

DECLARE @ IncorrectCharLoc SMALLINT

SET @ IncorrectCharLoc=PATINDEX (&#039%[^ 0-9 ] % ” , @ sträng )

MEDAN @ IncorrectCharLoc > 0

BEGIN

SET @ Numericstring=saker ( @ Numericstring , @ IncorrectCharLoc , 1 , ” &#039)

SET @ IncorrectCharLoc=PATINDEX (&#039%[^ 0-9 ] % &#039 , @ Numericstring )

END

Om ( @ Numericstring =&#039&#039)

SET @ Numericstring=”0″-Detta kommer att försäkra att en rad siffror returneras

RETURN @ Numericstring

Slut

GO

Detta bygger bort av användardefinierade funktionen skapad av Pinal Dave . .
2
Använd funktionen så här: .

Välj [ dbo ] UDF_NumericOnlyChars ( ” sadDs132 # dds @ 19 ” )

som återgår .

13. 219
3
Använd funktionen på ett bord kolumnen för att bara returnera siffror i strängen :

Välj Förnamn, Efternamn , Telefon , UDF_NumericOnlyChars (Telefon ) som ” NumberOnly ” från tblPeople

som återgår :

Förnamn Efternamn Telefon NumberOnly

——————————— ————- ———————

John Doe (888) 555-1212 8885 551212

tips och varningar

  • Med några enkla modifieringar kan denna funktion ändras att bara returnera alfatecken eller både bokstäver och siffror .
  • Visited 1 times, 1 visit(s) today

    コメント

    タイトルとURLをコピーしました