me he quedado atascado con la subcadena.subcadena de SQL y último índice de
En la entrada tengo una cadena que se parece a Sometext (123456)
. Esos dígitos al final son aleatorios. Necesito obtener solo texto de esa cadena.
me he quedado atascado con la subcadena.subcadena de SQL y último índice de
En la entrada tengo una cadena que se parece a Sometext (123456)
. Esos dígitos al final son aleatorios. Necesito obtener solo texto de esa cadena.
¿Qué tal esto?
DECLARE @Data TABLE (Val VARCHAR(20))
INSERT @Data VALUES ('Sometext (123456)')
INSERT @Data VALUES ('')
INSERT @Data VALUES (NULL)
INSERT @Data VALUES ('S(123456)')
INSERT @Data VALUES ('(123456)')
SELECT
CASE
WHEN CHARINDEX('(', Val) > 0 THEN
RTRIM(SUBSTRING(val,1, CHARINDEX('(', Val) - 1))
ELSE Val
END
FROM @Data
Si lo que desea es la primera parte hasta el '(' podría intentar
declare @t varchar(50)
set @t = 'function (12343)'
select rtrim(substring(@t,1, charindex('(', @t)-1))
Realmente depende del formato de la cadena de entrada, pero aquí es un enfoque ligeramente diferente utilizando PATINDEX que devolverá la cadena hasta que coincida con un carácter no AZ:.
declare @text varchar(500); set @text = 'Sometext (123456)'
select SUBSTRING(@text, 0, PATINDEX('%[^A-Z]%' , @text))
Si queremos eliminar la frase y mantener el número que podríamos hacer como esto
DECLARE @Text VARCHAR(MAX);
SET @Text = 'Sometext (123456)'
SELECT SUBSTRING(@Text, CHARINDEX(' ', @Text) + 1, LEN(@Text)) As TextOutput
El resultado será: (123456)
Más ejemplos. Entonces, ¿quieres "Sometext()" out o "Sometext"? ¿Qué sucede si tiene "Sometext (123ABC456 )"? – gbn
Tengo solo dígitos dentro de las llaves –