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

Encontrar un Caracter segun un formato

Estas en el tema de Encontrar un Caracter segun un formato en el foro de SQL Server en Foros del Web. Hola a todos, tengo un problema que espero uno de UDS. me pueda ayudar, les cuento mi problema. Necesito capturar el sgte valor de una ...
  #1 (permalink)  
Antiguo 16/01/2009, 10:34
 
Fecha de Ingreso: enero-2008
Mensajes: 68
Antigüedad: 16 años, 4 meses
Puntos: 2
Encontrar un Caracter segun un formato

Hola a todos,
tengo un problema que espero uno de UDS. me pueda ayudar, les cuento mi problema.
Necesito capturar el sgte valor de una cadena con el sgte formato
"pgt-sds-100"
"wew-ww-3"
"eue-400"

lo que necesito es capturar el numero despues del ultimo guion o sea
"pgt-sds-100" => 1
"wew-ww-3" => 3
"eue-400" => 4

no se si se puede hacer esto en sql server
espero que allan comprendido mi problema.
Salu2
  #2 (permalink)  
Antiguo 16/01/2009, 12:43
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Respuesta: Encontrar un Caracter segun un formato

Esta seria una forma,

Pero si lo pones en el where te pegara en el performance sobre todo si la estaras usando sobre una tabla con muchos registros.

Lo mejor seria hacer un proceso que obtenga este valor en un campo por separado para que no tengas que estar calculandolo cada vez que lo necesites..

Si es una tabla pequena o se ejecuta en el select (campos seleccionados) que siempre devuelve pocos valores no tendras problemas..

En fin ahi evalua la conveniencia de su uso..

Código:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fnReturnKeyValue]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[fnReturnKeyValue]
GO


Create function dbo.fnReturnKeyValue (@strField as varchar(400))
returns char(1)
AS
Begin
   return SUBSTRING(@strField, CHARINDEX('-', @strField, 1) - 1,1)
End
GO

SELECT dbo.fnReturnKeyValue(reverse('pgt-sds-100')) Field1
      ,dbo.fnReturnKeyValue(reverse('wew-ww-3'))    Field2
      ,dbo.fnReturnKeyValue(reverse('eue-400'))     Field3



Field1 Field2 Field3 
------ ------ ------ 
1      3      4

(1 row(s) affected)
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
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 10:31.