Hvordan ta ut Alpha-tegn, men la numeriske tegn i SQL
Microsoft SQL er Transact-SQL har muligheten til å ta ut alfategn, men la numeriske tegn i en streng; det bare krever opprettelse 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 innsats utsagn ved å rydde opp dataene før du prøver innsatsen. I de fleste tilfeller vil hele innsatsen setningen mislykkes hvis det er en bokstav i et numerisk felt.
Bruksanvisning
1 I Microsoft SQL, opprette en brukerdefinert funksjon som:
CREATE FUNCTION dbo.UDF_NumericOnlyChars
(
@string VARCHAR (8000)
)
RETURNS VARCHAR (8000)
SOM
BEGYNNE
ERKLÆRER @IncorrectCharLoc SMALLINT
SET @IncorrectCharLoc = PATINDEX ( '% [^ 0-9]%', @string)
MENS @IncorrectCharLoc> 0
BEGYNNE
SET @Numericstring = STUFF(@Numericstring, @IncorrectCharLoc, 1, '')
SET @IncorrectCharLoc = PATINDEX ( '% [^ 0-9]%', @Numericstring)
SLUTT
Hvis (@Numericstring = '')
SET @Numericstring = '0' -- This will insure that a string of numbers is returned
RETURN @Numericstring
SLUTT
GÅ
Dette er basert off av den brukerdefinerte funksjonen opprettet av Pinal Dave.
2 Bruk funksjonen slik:
Velg [dbo] .UDF_NumericOnlyChars ( 'sadDs132 # DDS @ 19')
Som vil returnere:
13219
3 Bruk funksjonen på en tabell kolonne for å bare returnere sifre i strengen:
Velg Fornavn, Etternavn, Telefon, UDF_NumericOnlyChars (Telefon) som 'NumberOnly' fra tblPeople
Som vil returnere:
Firstname Lastname Telefon NumberOnly
----------------- ---------------- ------------- ---- -----------------
John Doe (888)555-1212 8885551212
Hint
- Med noen enkle modifikasjoner, kan denne funksjonen bli endret til bare retur alfategn eller begge bokstaver og siffer.