Microsoft SQL Transact -SQL hat die Fähigkeit zu nehmen alpha Zeichen aber lassen numerische Zeichen in einem String , es erfordert nur die Erstellung einer benutzerdefinierten Funktion . Vielleicht möchten Sie diese in Fällen zu tun , wo es ein numerisches Feld in der Datenbank , und Sie möchten , um die Integrität Ihrer Insert-Anweisung durch die Säuberung der Daten , bevor Sie den Einsatz zu schützen. In den meisten Fällen wird das gesamte Insert-Anweisung fehl, wenn es ein Alpha-Zeichen in einem numerischen Feld . Anleitung
1
Microsoft SQL , erstellen Sie eine benutzerdefinierte Funktion wie :
CREATE FUNCTION dbo.UDF_NumericOnlyChars
(
@ string VARCHAR (8000)
)
Rückgabe VARCHAR (8000)
AS
BEGIN DECLARE @
IncorrectCharLoc SMALLINT
< p > SET @ IncorrectCharLoc = PATINDEX ( '% [^ 0-9] % ', @ string)
WHILE @ IncorrectCharLoc > 0
BEGIN
SET @ Numericstring = STUFF ( @ Numericstring , @ IncorrectCharLoc , 1 ,'')
SET @ IncorrectCharLoc = PATINDEX ( '% [^ 0-9] % ', @ Numericstring )
END
< p> If ( @ Numericstring ='')
SET @ Numericstring = '0 ' - Dadurch wird sichergestellt, dass eine Reihe von Zahlen
RETURN zurückgegeben @ Numericstring
END
GO
ausgeschaltet wird der benutzerdefinierte Funktion von Pinal Dave erstellt basierend
2
Verwenden Sie die Funktion wie folgt aus: .
< p . > Wählen Sie [ dbo] UDF_NumericOnlyChars ( ' sadDs132 # dds @ 19')
Welche zurückkehren wird :
13219
3
Verwenden Sie die Funktion auf eine Tabellenspalte nur wieder die Ziffern in der Zeichenfolge :
Wählen Sie Vorname, Nachname , Telefon , UDF_NumericOnlyChars (Telefon) als " NumberOnly ' aus tblPeople
Welche zurückkehren wird :
< p> Vorname Name Telefon NumberOnly
-------------------------------------- -----------------------------
John Doe (888) 555-1212 8885 551212