fnRemoveSpecialChars: İstenmeyen karakterleri çıkartın

Published on 21 February 2012 by in Genel T-SQL / Okunma: 1,169

0

Çoğu zaman kayıt tablolarında girilen verilerin sadece sayı ve harf olması istenir. Örneğin websiteniz üzerindeki registration formunuzda girilmesini isteyeceğiniz düzen [0-9], [a-z], [A-Z] şeklinde olabilir. Bunu websitenizin code’larında rahatlıklı yapabilirsiniz. Fakat SQL Server üzerinde yapmak isterseniz de çok güzel bir fonksiyon mevcut. Aşağıdaki fonksiyon ile girilen veride ki özel karakterleri remove edip, kabul edilen halini ( [0-9], [a-z], [A-Z] ) bırakabiliyorsunuz.

/*
  SELECT dbo.fnRemoveSpecialChars('abc-123+ABC')
*/

CREATE FUNCTION dbo.fnRemoveSpecialChars
(
	@s VARCHAR(256)
)
RETURNS VARCHAR(256)
WITH SCHEMABINDING

BEGIN
	IF @s IS NULL
	    RETURN NULL

	DECLARE @s2 VARCHAR(256)
	SET @s2 = ''
	DECLARE @l INT
	SET @l = LEN(@s)
	DECLARE @p INT
	SET @p = 1
	WHILE @p <= @l
	BEGIN
	    DECLARE @c INT
	    SET @c = ASCII(SUBSTRING(@s, @p, 1))
	    IF @c BETWEEN 48 AND 57
	       OR @c BETWEEN 65 AND 90
	       OR @c BETWEEN 97 AND 122
	        SET @s2 = @s2 + CHAR(@c)

	    SET @p = @p + 1
	END
	IF LEN(@s2) = 0
	    RETURN NULL

	RETURN @s2
END

 

Leave a Reply