di Microsoft SQL Transact- SQL ha la capacità di estrarre i caratteri alfabetici , ma lasciare i caratteri numerici in una stringa , ma richiede solo la creazione di una funzione definita dall'utente . Si consiglia di farlo in casi in cui vi è un campo numerico nel database e si desidera proteggere l'integrità del vostro INSERT pulendo i dati prima di tentare l' inserimento. Nella maggior parte dei casi , l'intera istruzione di inserimento avrà esito negativo se non vi è un carattere alfabetico in un campo numerico . Istruzioni
1
In Microsoft SQL , creare una funzione definita dall'utente come :
CREATE dbo.UDF_NumericOnlyChars FUNZIONE
(
@ stringa VARCHAR ( 8000 ) per
) per
RETURNS VARCHAR ( 8000 ) per
AS
BEGIN
DECLARE @ IncorrectCharLoc SMALLINT
< p > SET @ IncorrectCharLoc = PATINDEX ( '% [ ^ 0-9 ] % ' , @ stringa ) per
MENTRE @ IncorrectCharLoc > 0
BEGIN
SET @ Numericstring = STUFF ( @ Numericstring , @ IncorrectCharLoc , 1 , '' ) per
SET @ IncorrectCharLoc = PATINDEX ( '% [ ^ 0-9 ] % ' , @ Numericstring ) per
END
< p > Se ( @ Numericstring = '' ) per
SET @ Numericstring = '0 ' - Ciò contribuirà a garantire che una stringa di numeri viene restituito
RETURN @ Numericstring
FINE
GO
questo si basa off della funzione definita dall'utente creato da Pinal Dave
2
Utilizzare la funzione in questo modo: .
< p . > Selezionare [ dbo ] UDF_NumericOnlyChars ( ' sadDs132 dds # @ 19' ) per
che restituirà :
13219
3
Utilizzare la funzione di una colonna della tabella di restituire solo le cifre numeriche nella stringa :
Selezionare Nome, Cognome, Telefono , UDF_NumericOnlyChars ( Phone) come ' NumberOnly ' da tblPeople
che restituirà :
< p > Nome Cognome Telefono NumberOnly
-------------------------------------- -----------------------------
John Doe (888) 555-1212 8885 551212