Hola, buscando una forma de filtrar caracteres via sql en un script ya existente encontre una, pero es muy avanzada para mi nivel actual de SQL, por lo tanto, no se adaptarlo, quisiera pedirles que si alguno de ustedes tiene el conocimiento suficiente, adaptar la funcion de sacar los caracteres raros y admitir solo de la A a la Z como este hace:
Código PHP:
IF EXISTS (SELECT 1 FROM sysobjects WHERE name='ASCIICharOnly')
DROP FUNCTION dbo.ASCIICharOnly
GO
CREATE FUNCTION dbo.ASCIICharOnly (@CharData VARCHAR(50))
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @Index INT,
@ASCIIData VARCHAR(50),
@ASCIIChar INT
-- Initialization code
SET @Index = 1
SET @ASCIIData = ''
WHILE @Index < LEN(@CharData)+1
BEGIN
SET @ASCIIChar = ASCII(SUBSTRING(@CharData, @Index, 1))
--Restrict the result to A-Z and a-z
IF @ASCIIChar BETWEEN 65 and 90 or @ASCIIChar BETWEEN 97 and 122
BEGIN
-- Construct the output characters
SET @ASCIIData = @ASCIIData + CHAR(@ASCIIChar)
END
SET @Index = @Index + 1
END
RETURN @ASCIIData
END
GO
-- Sample test
SELECT dbo.ASCIICharOnly ('Vinod1234Kumar!@$%Test') AS CharValue
Al siguiente script
Código PHP:
CREATE procedure WZ_GuildCreate
@GuildName nvarchar(50),
@MasterName nvarchar(10)
as
if (SELECT COUNT(*) FROM guild where G_Name=@GuildName )=0
BEGIN
DECLARE @ErrorCode int
SET @ErrorCode = 0
SET XACT_ABORT OFF
Set nocount on
begin transaction
-- 望萄蒂 儅撩棻.
IF EXISTS(SELECT Character.Name, MEMB_INFO.Vip, Character.AccountID, MEMB_INFO.memb___id
FROM Character JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE (Character.Name = @MasterName) AND (MEMB_INFO.Vip = 1))
BEGIN
INSERT INTO Guild (G_Name,G_Master,G_Score) valueS (@GuildName, @MasterName, 1)
IF ( @@Error <> 0 )
BEGIN
SET @ErrorCode = 1
END
-- 望萄蒂 薑鼻瞳戲煎 儅撩 棻賊
IF ( @ErrorCode = 0 )
BEGIN
-- 望萄 葆蝶攪煎 蹺陛棻.
INSERT GuildMember (Name, G_Name, G_Level) valueS (@MasterName, @GuildName, 1)
IF ( @@Error <> 0 )
BEGIN
SET @ErrorCode = 2
END
END
IF ( @ErrorCode <> 0 )
rollback transaction
ELSE
commit transaction
select @ErrorCode
Set nocount off
SET XACT_ABORT ON
END
end
GO
Mas bien, lo que necesitaria es adaptar el filtrado de caracteres ascii ( q es la funcion del otro script) al procedimiento wz_guildcreate
Si alguien me hace el favor se lo agradeceria muchisisisimo.