我需要执行RFC(墨西哥的税收参考),通过SQL函数,除了需要放置的元音之外,我还可以毫无问题地获得其他字符,因为我无法为C#执行或Java在一段时间内无法通过“字符串”处理。
请帮助。
这是我到目前为止一直在做的事情:
DECLARE
@position INT,
@fecha_nac VARCHAR(50),
@i INT,
@vo CHAR,
@ap CHAR
BEGIN
SET @fecha_nac = 'Pineda'
SET @i = 1
SET @ap = 'P'
BEGIN
DECLARE @ct INT
WHILE @i > 0
BEGIN
SET @ct = @ct + 1
SET @position = CHARINDEX('a', @fecha_nac COLLATE Latin1_General_CS_AS)
SET @vo = SUBSTRING(@fecha_nac, @position, 1)
IF @vo = @ap
BEGIN
SET @position = CHARINDEX('a', @fecha_nac COLLATE Latin1_General_CS_AS)
SET @vo = SUBSTRING(@fecha_nac, @position, 1)
END
-- SET @position = CHARINDEX('e',@fecha_nac COLLATE Latin1_General_CS_AS)
-- SET @vo = SUBSTRING(@fecha_nac,@position,1)
-- IF @vo = @ap
-- BEGIN
-- set @position=CHARINDEX('e',@fecha_nac COLLATE Latin1_General_CS_AS)
-- SET @vo= SUBSTRING(@fecha_nac,@position,1)
-- END
-- SET @position=CHARINDEX('i',@fecha_nac COLLATE Latin1_General_CS_AS)
-- SET @vo= SUBSTRING(@fecha_nac,@position,1)
-- IF @vo=@ap
-- BEGIN
-- set @position=CHARINDEX('i',@fecha_nac COLLATE Latin1_General_CS_AS)
-- SET @vo= SUBSTRING(@fecha_nac,@position,1)
-- END
-- SET @position=CHARINDEX('o',@fecha_nac COLLATE Latin1_General_CS_AS)
-- SET @vo= SUBSTRING(@fecha_nac,@position,1)
-- IF @vo=@ap
-- BEGIN
-- set @position=CHARINDEX('o',@fecha_nac COLLATE Latin1_General_CS_AS)
-- SET @vo= SUBSTRING(@fecha_nac,@position,1)
-- END
-- SET @position=CHARINDEX('u',@fecha_nac COLLATE Latin1_General_CS_AS)
-- SET @vo= SUBSTRING(@fecha_nac,@position,1)
-- IF @vo=@ap
-- BEGIN
-- set @position=CHARINDEX('u',@fecha_nac COLLATE Latin1_General_CS_AS)
-- SET @vo= SUBSTRING(@fecha_nac,@position,1)
-- END
----
SET @i=0
END
END
SELEct @vo
--Select Vowel_ap_p = UPPER(SUBSTRING('Pineda',@position,1))
END
该功能的代码
CREATE FUNCTION Obtener_RFC(@nombre varchar(50), @ap_paterno varchar(50),
@ap_materno varchar(50), @fecha_nac date)
RETURN VARCHAR(250)
AS
BEGIN
DECLARE
@RFC varchar(250),
@Prime_ap_p char,
@Vowel_ap_p char,
@Prime_ap_m char,
@Prime_name char,
@aa int,@mm int,@yy int,
@len int,
@position int
SET @Prime_ap_p = SUBSTRING(@ap_paterno,1,1)
SET @Prime_ap_m = SUBSTRING(@ap_materno,1,1)
SET @Len= LEN(@fecha_nac)
IF @len= 8
BEGIN
SET @yy= SUBSTRING(convert(char,@fecha_nac),3,2)
SET @mm= SUBSTRING(convert(char,@fecha_nac),5,2)
SET @aa = SUBSTRING(convert(char,@fecha_nac),7,2)
END
IF @len=10
BEGIN
SET @yy= SUBSTRING(convert(char,@fecha_nac),3,2)
SET @mm= SUBSTRING(convert(char,@fecha_nac),7,2)
SET @aa = SUBSTRING(convert(char,@fecha_nac),9,2)
END
SET @Vowel_ap_p = UPPER(SUBSTRING(@ap_paterno,@position,1))
Return @RFC
END