Microsoft SQL er Transact -SQL har evnen til å ta ut alfa tegn , men la numeriske tegn i en streng , det bare krever etableringen av en brukerdefinert funksjon . Det kan være lurt å gjøre dette i tilfeller hvor det er et numerisk felt i databasen og du ønsker å beskytte integriteten til insert-kommando ved å rense opp dataene før du prøver innsatsen . I de fleste tilfeller vil hele ildstedet setningen svikte hvis det er et alfa- numerisk tegn i et felt . Instruksjoner
en
Microsoft SQL , lage en brukerdefinert funksjon som:
CREATE FUNCTION dbo.UDF_NumericOnlyChars
(
@ string VARCHAR ( 8000)
)
AVKASTNING VARCHAR ( 8000)
AS
START
erklærer @ IncorrectCharLoc SMALLINT
< p > SET @ IncorrectCharLoc = PATINDEX (' % [ ^ 0-9 ] %' @ string)
MENS @ IncorrectCharLoc > 0
BEGIN
SET @ Numericstring = STUFF ( @ Numericstring , @ IncorrectCharLoc , 1 , '')
SET @ IncorrectCharLoc = PATINDEX (' % [ ^ 0-9 ] %' @ Numericstring )
END
< p> Hvis ( @ Numericstring = '')
SET @ Numericstring = '0 ' - Dette vil sørge for at en tallrekke returneres
RETURN @ Numericstring
END
GO
p Dette er basert off av den brukerdefinerte funksjonen opprettet av Pinal Dave
2
Bruk funksjonen som dette: .
< p . > Velg [ dbo ] UDF_NumericOnlyChars ( ' sadDs132 # dds @ 19 ')
Som vil returnere : en
13219
3
Bruk funksjonen på en tabell kolonne for å bare returnere de numeriske tallene i strengen : en
Velg Fornavn, Etternavn , Telefon , UDF_NumericOnlyChars ( Telefon) som ' NumberOnly ' fra tblPeople
som vil returnere : en < p> Fornavn Etternavn Telefon NumberOnly
-------------------------------------- -----------------------------
John Doe (888) 555-1212 8885 551212