Hvordan ta ut Alpha-tegn, men la numeriske tegn i SQL

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

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.