Hola todos,
para consultarles cómo calcular la longitud de una cadena PERO SIN USAR LA
FUNCION LEN(), puede usarse cualquier otra funcion de SQL server excepto
LEN() *** sql server 2000.
¿Para qué lo necesito..?: pues es que me salió esa pregunta en un test en un
proceso de selección para un trabajo, no supe cómo hacerlo así que tengo la
duda.
No encontré un caracter de fin de cadena, como en C que es el ASCII 0.
Adjunto una función que hice, funciona pero me gustaría conocer otra
solución
gracias.
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
create function [dbo].[fnLonCadena] ( @s varchar(3000) )
returns int
as
/*Calcula la longitud de una cadena @s
*/
begin
declare @i integer
declare @c char(1)
select @i = 1
while ascii(substring(@s,@i,1)) is not null
begin
set @i = @i + 1
set @c = substring(@s,@i,1)
convert(varchar(10),ascii(substring(@s,@i,1)))
if @i > 20 set @c=NULL
end
return(@i - 1 )
end
GO
select dbo.fnLonCadena('una cadena') , LEN('una cadena')
select dbo.fnLonCadena('123456') , LEN('123456')
select dbo.fnLonCadena('') , LEN('')
select dbo.fnLonCadena('el hijo de rana') , LEN('el hijo de rana')
Chevy
Leer las respuestas