Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Autoincrementable en nvarchar

Estas en el tema de Autoincrementable en nvarchar en el foro de SQL Server en Foros del Web. Hola, buenas tardes. El día de hoy me tope con un problema algo raro, pues nunca me había sucedido. Resulta que necesito realizar inserciones de ...
  #1 (permalink)  
Antiguo 18/02/2016, 18:40
 
Fecha de Ingreso: noviembre-2014
Ubicación: cuernavaca
Mensajes: 8
Antigüedad: 9 años, 4 meses
Puntos: 0
Información Autoincrementable en nvarchar

Hola, buenas tardes.

El día de hoy me tope con un problema algo raro, pues nunca me había sucedido.

Resulta que necesito realizar inserciones de datos a una tabla, pero dicha tabla en su
primary key es del tipo nvarchar, pero en la aplicación pareciera un valor entero ya que va siendo autoincrementable.

Así que me di a la tarea de empezar a solucionar dicho problema a lo cual llegue al siguiente query :

Código SQL:
Ver original
  1. SELECT ISNULL( MAX (CLIENTE),0)+1 AS idCliente
  2.      FROM clients WHERE CLIENTE != 'SYS'

Pero debo de obtener una salida como la siguiente 009598 (tomando en cuenta que el ultimo número ingresado fue el 009598), mi consulta solo me arroja 9598. Ahora la pregunta es ¿Qué hacer para que esos últimos dos ceros salgan? ¿Como hacer para declarar el store procedure para la insercion?

Última edición por gnzsoloyo; 18/02/2016 a las 20:07
  #2 (permalink)  
Antiguo 19/02/2016, 05:49
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 12 años, 9 meses
Puntos: 15
Respuesta: Autoincrementable en nvarchar

Puedes usar RIGTH:

Código SQL:
Ver original
  1. SELECT RIGHT('00' + Ltrim(Rtrim(9598)),6)
  #3 (permalink)  
Antiguo 19/02/2016, 08:39
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Autoincrementable en nvarchar

Busca en el foro, hay mas de 1 post donde piden los mismo, la solucion que te dan funciona siempre y cuando nada mas sean 4 caracteres, si son menos o mas, pues bueno tendras que cambiarla ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 20/02/2016, 15:16
 
Fecha de Ingreso: noviembre-2014
Ubicación: cuernavaca
Mensajes: 8
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Autoincrementable en nvarchar

Muchas gracias por la ayuda a los dos, hasta el momento tengo el siguiente código:
declare @txtCliente int
set @txtCliente = (SELECT COUNT(CLIENTE) FROM clients)
select replicate ('0',(06 - len(@txtCliente))) + convert(nvarchar, @txtCliente)

ahora me surgió una nueva duda, como lo trato los datos en un store procedure? pueden ayudarme con un ejemplo, desde ya muchas gracias.
  #5 (permalink)  
Antiguo 20/02/2016, 20:23
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 8 meses
Puntos: 180
Respuesta: Autoincrementable en nvarchar

En lugar de:
Código SQL:
Ver original
  1. SET @txtCliente = (SELECT COUNT(CLIENTE) FROM clients)

Es mucho mejor
Código SQL:
Ver original
  1. SELECT @txtCliente = COUNT(cliente) FROM clients
__________________
MCTS Isaias Islas

Última edición por gnzsoloyo; 24/02/2016 a las 12:30
  #6 (permalink)  
Antiguo 21/02/2016, 15:46
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Autoincrementable en nvarchar

depende de como vayas a utilizar los datos, puedes hacerlo desde un procedure o desde una funcion.......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 24/02/2016, 10:58
 
Fecha de Ingreso: noviembre-2014
Ubicación: cuernavaca
Mensajes: 8
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Autoincrementable en nvarchar

Gracias nuevamente a todos por los aportes y sugerencias.

tomando en cuenta lo sugerido, el sp de inserción sería de la siguiente manera

Código SQL:
Ver original
  1. CREATE STORE PROCEDURE
  2. SELECT @txtCliente = COUNT(cliente) FROM clients
  3.    @txtCliente INT output,
  4.    @txtNombre VARCHAR(50),
  5.    @txtDireccion VARCHAR (50)
  6. AS
  7.    INSERT INTO clients (nombre, direccion)
  8.    VALUES (@txtNombre, @txtDireccion)
  9. GO

Sugieren algo, mejor que eso?

Última edición por gnzsoloyo; 24/02/2016 a las 12:30
  #8 (permalink)  
Antiguo 24/02/2016, 11:30
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 8 meses
Puntos: 180
Respuesta: Autoincrementable en nvarchar

¿Ya lo probaste?, Digo, no creo que funcione, en todo caso seria

Código SQL:
Ver original
  1. CREATE STORE PROCEDURE
  2. @txtCliente INT output,
  3. @txtNombre VARCHAR(50),
  4. @txtDireccion VARCHAR (50)
  5. AS
  6. DECLARE @txtCliente INT
  7. SELECT @txtCliente = COUNT(cliente) FROM clients
  8.  
  9. INSERT INTO clients (nombre, direccion)
  10. VALUES (@txtNombre, @txtDireccion)
  11. GO
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 18/03/2016, 10:41
 
Fecha de Ingreso: noviembre-2014
Ubicación: cuernavaca
Mensajes: 8
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Autoincrementable en nvarchar

Muchas gracias a todos por sus aportes, les comento que ya lo resolví
Código SQL:
Ver original
  1. DECLARE @txtCliente nvarchar(30)
  2. SET @txtCliente = (SELECT COUNT(*) FROM clients )
  3. SET @txtCliente = (SELECT replicate ('0',(06 - len(@txtCliente))) + CONVERT(nvarchar, @txtCliente));
  4. INSERT INTO clients (CLIENTE,NOMBRE) VALUES (@txtCliente, @txtNombre)

Última edición por gnzsoloyo; 18/03/2016 a las 10:48

Etiquetas: autoincrementable, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:47.