SQL Server - tipo varchar controlando caracteres

   
Vista:

tipo varchar controlando caracteres

Publicado por eduardo (2 intervenciones) el 03/07/2012 19:42:17
Hola.

Necesito hacer un script para crear una tabla en la cual la pk sea un varchar de largo 6 y que los primeros 3 caracteres sean letras y los demas numeros, estoy tratando de armar el check pero no se como hacerlo.
Alguien me da una idea?

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

tipo varchar controlando caracteres

Publicado por Isaias (3182 intervenciones) el 03/07/2012 20:45:06
Lo declaras como un CHAR(6) PRIMARY KEY y mediante un TRIGGER, condicionas que los 3 primeros carateres sean numeros y los restantes letras, de lo contrario, haces un ROLLBACK de la transaccion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

tipo varchar controlando caracteres

Publicado por eduardo (2 intervenciones) el 03/07/2012 20:52:32
Me parece una buena idea.

pero como identifico cada uno de los caracteres?

Es mediante [ ] ??

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

tipo varchar controlando caracteres

Publicado por Isaias (3182 intervenciones) el 03/07/2012 22:46:56
Hice una rutina, no se si sea lo mas conveniente, pero de que funciona, funciona.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
DECLARE
        @x int = 1,
        @y int = 1,
		@cad CHAR(6) = '123ABC',
		@BIT BIT = 0
 
SELECT 'CADENA ', @cad
 
WHILE @x <= len(@cad) OR @y < 3
BEGIN
  IF isnumeric(substring(@cad,@x,1)) = 1
    BEGIN
      SET @BIT = 1
    END
  ELSE
    BEGIN
     SET @BIT = 0
     BREAK
    END
    SET @x = @x + 1
    IF @y = 3
     BREAK
    SET @y = @Y + 1
    CONTINUE
  END
 
 IF @BIT = 0
	BEGIN
		SELECT 'No se cumple la regla'
		-- Hago el ROLLBACK y me regreso
	END
 
SET @y = 1
WHILE @x <= len(@cad) OR @y < 3
BEGIN
  IF isnumeric(substring(@cad,@x,1)) = 1
    BEGIN
      SET @BIT = 0
      BREAK
    END
  ELSE
    BEGIN
     SET @BIT = 1
    END
    SET @x = @x + 1
    IF @y = 3
     BREAK
    SET @y = @Y + 1
    CONTINUE
  END
 
 IF @BIT = 0
	BEGIN
		SELECT 'No se cumple la regla'
		-- Hago el ROLLBACK y me regreso
	END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar