El ejemplo se ha probado en una base de datos Microsoft SQL Server 2008 R2
CREATE FUNCTION dbo.udf_GetNumeric
(@strAlphaNumeric VARCHAR(256))
RETURNS VARCHAR(256)
AS
BEGIN
DECLARE @intAlpha INT
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric)
BEGIN
WHILE @intAlpha > 0
BEGIN
SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '' )
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric )
END
END
RETURN ISNULL(@strAlphaNumeric,0)
END
GO
Now use the
function
asSELECT dbo.udf_GetNumeric(column_name)
from table_name
Ésta función es muy útil y permite extraer información sólo números de un campo cadena.Ejemplo: Supongamos que tenemos una base de datos con los clientes y sus DNI. El DNI está almacenado con la letra y queremos sólo la parte numérica.
si hacemos: select dni from clientes
obtendremos:
dni
--------
1234567894X
1234567895J
1234567895P
ahora: creamos la función en la base de datos y a continuación realizamos la consulta:
select
dbo.udf_GetNumeric(dni) from clientes
obtendremos:dni
--------
1234567894
1234567895
1234567895
fuente:
https://stackoverflow.com/questions/16667251/query-to-get-only-numbers-from-a-string
Muchas gracias al usuario: https://stackoverflow.com/users/1841054/luv
Muy buena ayuda, muchas gracias
ResponderEliminarconsulta, como hago para utilizar el valor largo de campo encontrado para ubicar el siguiente campo
ResponderEliminarsaludos una consulta como haría para que en ves que me salga los números me salga las letras
ResponderEliminarinvierte ésto ('%[^0-9]%' por ésto '%[A-Z]%'
Eliminarexcellente codigo mil gracias
ResponderEliminarMuy buen aporte Jesús, saludos.
ResponderEliminar