Czyszczenie ciągów tekstowych w SQL Server, zachowywanie liter i cyfr w SQL Server
Utwórz funkcję, aby oczyścić ciągi tekstowe ze wszystkich znaków, które nie są między 0-9 ani AZ w SQL Server
Przegląd
Nasza baza danych narzędzi jest pełna małych, zgrabnych funkcji.
Ten służy do czyszczenia danych, zanim umieścimy je w naszej bazie danych, usuwając cały tekst spoza przedziału od „0” do „Z”, przechodząc przez ciąg tekstowy do momentu, gdy nie można znaleźć żadnych elementów, które nie znajdują się między wartościami .
Podstawową funkcją jest po prostu zapętlenie każdego znaku wartości wejściowej i usunięcie wszystkich, które nie mieszczą się w zakresie indeksu wzorców.
Jeśli potrzebujesz tylko liczb, wtedy [^ 0-Z] staje się [^ 0-9].
Alternatywnie dla samego tekstu jest to [^ aZ].
SQL
CREATE Function [dbo].[CleanToText](@Data VARCHAR(100))Returns VARCHAR(100)AS BEGIN DECLARE @Letter INT SET @Letter =PATINDEX('%[^0-Z]%',@Data) BEGIN WHILE @Letter>0 BEGIN SET @Data =STUFF(@Data,@Letter,1,'') SET @Letter =PATINDEX('%[^0-Z]%',@Data) END END RETURN @DataENDGOSELECT dbo.CleanToText('info@claytabase.co.uk')
Przegląd
Zwraca następujący ciąg „infoclaytabasecouk”, usuwając znaki „@” i „.”.