Cálculo Nif

06/02/2004 - 19:07 por Alberto | Informe spam
Tengo que calcular en la letra del nif a partir del dni en una tabla.
Estoy haciendo una prueba con un dato en una variable antes de hacer el
update en la tabla pero no me funciona. El código es el siguiente:

declare @letras char(23)
declare @nif char(9)

Set @letras = 'TRWAGMYFPDXBNJZSQVHLCKE'
set @nif = '12345678'

set @nif = @nif + Substring(@Letras, (@nif % 23) + 1, 1)
print @nif
print Substring(@Letras, (@nif % 23) + 1, 1)

La instrucción Substring ... calcula bien la letra ('Z') en este caso pero
no funciona la concatenación con la variable @nif ya que esta sigue valiendo
'12345678'.

¿A qué se debe?
Gracias.

Preguntas similare

Leer las respuestas

#1 Jose Mariano Alvarez \(MUG\)
06/02/2004 - 19:10 | Informe spam
Tu problema es que tienes un espacio detras del numero porque usas una
variable char. Si usas varchar funciona OK. Sino debes usar la funcion
RTRIM.

declare @letras varchar(23)
declare @nif varchar(9)

Set @letras = 'TRWAGMYFPDXBNJZSQVHLCKE'
set @nif = '12345678'

print Substring(@Letras, (@nif % 23) + 1, 1)
set @nif = @nif + Substring(@Letras, (cast(@nif as int) % 23) + 1, 1)
print @nif



Jose Mariano Alvarez
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar

"Alberto" wrote in message
news:
Tengo que calcular en la letra del nif a partir del dni en una tabla.
Estoy haciendo una prueba con un dato en una variable antes de hacer el
update en la tabla pero no me funciona. El código es el siguiente:

declare @letras char(23)
declare @nif char(9)

Set @letras = 'TRWAGMYFPDXBNJZSQVHLCKE'
set @nif = '12345678'

set @nif = @nif + Substring(@Letras, (@nif % 23) + 1, 1)
print @nif
print Substring(@Letras, (@nif % 23) + 1, 1)

La instrucción Substring ... calcula bien la letra ('Z') en este caso pero
no funciona la concatenación con la variable @nif ya que esta sigue


valiendo
'12345678'.

¿A qué se debe?
Gracias.


Respuesta Responder a este mensaje
#2 Gustavo Larriera [MVP]
06/02/2004 - 19:20 | Informe spam
declare @letras char(23)
declare @nif varchar(20)
declare @nif2 varchar(20)

Set @letras = 'TRWAGMYFPDXBNJZSQVHLCKE'
set @nif = '12345678'

set @nif2 = @nif + Substring(@Letras, (convert(int,@nif) % 23) + 1, 1)
print @nif2
print Substring(@Letras, (@nif % 23) + 1, 1)


Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho.


"Alberto" wrote in message
news:
Tengo que calcular en la letra del nif a partir del dni en una tabla.
Estoy haciendo una prueba con un dato en una variable antes de hacer el
update en la tabla pero no me funciona. El código es el siguiente:

declare @letras char(23)
declare @nif char(9)

Set @letras = 'TRWAGMYFPDXBNJZSQVHLCKE'
set @nif = '12345678'

set @nif = @nif + Substring(@Letras, (@nif % 23) + 1, 1)
print @nif
print Substring(@Letras, (@nif % 23) + 1, 1)

La instrucción Substring ... calcula bien la letra ('Z') en este caso pero
no funciona la concatenación con la variable @nif ya que esta sigue


valiendo
'12345678'.

¿A qué se debe?
Gracias.


Respuesta Responder a este mensaje
#3 Alberto
06/02/2004 - 19:23 | Informe spam
Gracias
"Jose Mariano Alvarez (MUG)" <jose.alvarez * *Arroba* * mug.org.ar> escribió
en el mensaje news:
Tu problema es que tienes un espacio detras del numero porque usas una
variable char. Si usas varchar funciona OK. Sino debes usar la funcion
RTRIM.

declare @letras varchar(23)
declare @nif varchar(9)

Set @letras = 'TRWAGMYFPDXBNJZSQVHLCKE'
set @nif = '12345678'

print Substring(@Letras, (@nif % 23) + 1, 1)
set @nif = @nif + Substring(@Letras, (cast(@nif as int) % 23) + 1, 1)
print @nif



Jose Mariano Alvarez
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar

"Alberto" wrote in message
news:
> Tengo que calcular en la letra del nif a partir del dni en una tabla.
> Estoy haciendo una prueba con un dato en una variable antes de hacer el
> update en la tabla pero no me funciona. El código es el siguiente:
>
> declare @letras char(23)
> declare @nif char(9)
>
> Set @letras = 'TRWAGMYFPDXBNJZSQVHLCKE'
> set @nif = '12345678'
>
> set @nif = @nif + Substring(@Letras, (@nif % 23) + 1, 1)
> print @nif
> print Substring(@Letras, (@nif % 23) + 1, 1)
>
> La instrucción Substring ... calcula bien la letra ('Z') en este caso


pero
> no funciona la concatenación con la variable @nif ya que esta sigue
valiendo
> '12345678'.
>
> ¿A qué se debe?
> Gracias.
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida