Microsoft SQL s 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 man skapar en användardefinierad funktion . Du kanske vill göra detta i de fall då det finns ett numeriskt fält i databasen och du vill skydda integriteten av din insats uttalande genom att städa upp data innan insatsen . I de flesta fall kommer hela insatsen uttalande misslyckas om det finns en bokstav i ett numeriskt fält . Instruktioner
1
Microsoft SQL , skapa en användardefinierad funktion som:
skapar fungerar dbo.UDF_NumericOnlyChars
(
@ string VARCHAR ( 8000 ) katalog
) katalog
RETURNS VARCHAR ( 8000 ) katalog
AS
BEGIN
FÖRKLARA @ IncorrectCharLoc SMALLINT
SET @ IncorrectCharLoc = PATINDEX ( ' % [ ^ 0-9 ] % ' , @ string ) katalog
MEDAN @ IncorrectCharLoc > 0
BEGIN
SET @ Numericstring = STUFF ( @ Numericstring , @ IncorrectCharLoc , 1 , '' ) katalog
SET @ IncorrectCharLoc = PATINDEX ( ' % [ ^ 0-9 ] % ' , @ Numericstring ) katalog
END
Om ( @ Numericstring = '' ) katalog
SET @ Numericstring = '0 ' - Detta kommer att försäkra att en rad siffror returneras
RETURN @ Numericstring
END
GO
detta baseras bort av användardefinierad funktion skapad av Pinal Dave
2
Använd funktionen så här : .
< p . > Välj [ dbo ] UDF_NumericOnlyChars ( ' sadDs132 # dds @ 19 ' ) katalog
Vilket kommer tillbaka :
13219
3
Använd funktionen en tabell kolumn att endast returnera de numeriska siffrorna i strängen :
Välj Förnamn, Efternamn , Telefon , UDF_NumericOnlyChars ( Phone ) som " NumberOnly " från tblPeople
Vilket kommer tillbaka :
Förnamn Efternamn Telefon NumberOnly
-------------------------------------- -----------------------------
John Doe (888) 555-1212 8885 551212
Addera