Fiz uma function abaixo, que retira os numeros ou as letras de um campo string.. por exemplo o integrachave....
Exemplo:
-- TRAZER SOMENTE OS NUMEROS DE UM CAMPO
SELECT dbo.FNC_RETIRALETRANUM('FABIOFUMIO1978','N')
FROM GCOLIGADA
go
-- TRAZER SOMENTE AS LETRAS DE UM CAMPO
SELECT dbo.FNC_RETIRALETRANUM('FABIOFUMIO1978','N')
FROM GCOLIGADA
go
Com isso não precisa-se tratar os campos do INTEGRACHAVE da CLANCA...
Exemplo:
SELECT dbo.FNC_RETIRALETRANUM(INTEGRACHAVE,'N')
FROM CLANCA
go
Script de criação:
CREATE FUNCTION dbo.FNC_RETIRALETRANUM (@TEXTO VARCHAR(255), @FUNCAO VARCHAR(1))
RETURNS VARCHAR(255)
AS
BEGIN
-- RETIRAR CARACTERES/NUMEROS
DECLARE @TAMTEXTO INT,
@NOVOTEXTO VARCHAR(255),
@CONTADOR INT
SET @TAMTEXTO = LEN(@TEXTO)
SET @NOVOTEXTO = ''
SET @CONTADOR = 1
BEGIN
IF @FUNCAO = 'L' -- LETRAS
BEGIN
WHILE @CONTADOR <= @TAMTEXTO
BEGIN
IF SUBSTRING(@TEXTO,@CONTADOR,1)
NOT IN ('1','2','3','4','5','6','7','8','9','0','!','@','#','$','%','¨','&','*','(',')',
'+','=','-','\','<','>',':'';','?','/','|','[',']','{','}')
BEGIN
SET @NOVOTEXTO = @NOVOTEXTO + SUBSTRING(@TEXTO, @CONTADOR, 1)
END
SET @CONTADOR = @CONTADOR+1
END
END
IF @FUNCAO = 'N' -- NÚMEROS
BEGIN
WHILE @CONTADOR <= @TAMTEXTO
BEGIN
IF SUBSTRING(@TEXTO,@CONTADOR,1) IN ('1','2','3','4','5','6','7','8','9','0')
BEGIN
SET @NOVOTEXTO = @NOVOTEXTO + SUBSTRING(@TEXTO, @CONTADOR, 1)
END
SET @CONTADOR = @CONTADOR+1
END
END
RETURN (@NOVOTEXTO)
END
END