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 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 ('%[^ 0-9 ] % " , @ sträng )
MEDAN @ IncorrectCharLoc > 0
BEGIN
SET @ Numericstring=saker ( @ Numericstring , @ IncorrectCharLoc , 1 , " ')
SET @ IncorrectCharLoc=PATINDEX ('%[^ 0-9 ] % ' , @ Numericstring )
END
Om ( @ Numericstring ='')
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
Previous:nothing Next:hur man skapar en tabell databas