Usando T-SQL, ¿cómo podría obtener los últimos 3 caracteres de una columna varchar?Subcadena T-SQL - Últimos 3 caracteres
lo tanto, el texto de la columna es IDS_ENUM_Change_262147_190
y necesito 190
Usando T-SQL, ¿cómo podría obtener los últimos 3 caracteres de una columna varchar?Subcadena T-SQL - Últimos 3 caracteres
lo tanto, el texto de la columna es IDS_ENUM_Change_262147_190
y necesito 190
SELECT RIGHT(column, 3)
Eso es todo lo que necesita.
También puede hacer LEFT()
de la misma manera.
Tenga en cuenta si está utilizando esto en una cláusula WHERE
que el RIGHT()
no puede usar ningún índice.
Se puede utilizar cualquier manera:
SELECT RIGHT(RTRIM(columnName), 3)
O
SELECT SUBSTRING(columnName, LEN(columnName)-2, 3)
¿Hay una ventaja de una manera sobre la otra? ¿Y es necesario el RTRIM (me parece superfluo)? – noelicus
El trabajo se puede hacer de varias maneras y aquí he mostrado el uso de dos maneras comunes. El primer caso es más rápido que la segunda vía. RTRIM no es obligatorio. Se usa para omitir cualquier espacio adicional en el lado derecho. Gracias –
Porque más formas de pensar en ello siempre son buenos:
select reverse(substring(reverse(columnName), 1, 3))
No, más no siempre es mejor. –
Tienes razón. Siempre tendrá todas las herramientas que necesita para lograr cualquier trabajo que esté tratando de hacer. El conocimiento no es igual al poder, supongo. –
No estoy muy seguro de lo que se supone que significa. La solución que usted propone es innecesariamente compleja, y no hay ninguna circunstancia en la cual sea la solución correcta. Por lo tanto, es malo. –
declare @newdata varchar(30)
set @newdata='IDS_ENUM_Change_262147_190'
select REVERSE(substring(reverse(@newdata),0,charindex('_',reverse(@newdata))))
Explicación === ===
me pareció más fácil de leer escribe así:
SELECT
REVERSE(--4.
SUBSTRING(-- 3.
REVERSE(<field_name>),
0,
CHARINDEX(-- 2.
'<your char of choice>',
REVERSE(<field_name>) -- 1.
)
)
)
FROM
<table_name>
si usted quiere encontrar específicamente cuerdas que termina con caracteres deseados entonces esto ayudará a ..
select * from tablename where col_name like '%190'
Esto no responde la pregunta. El OP quiere saber cómo obtener los últimos 3 caracteres, sin importar cuáles sean, ni una cadena específica como 190. – BradleyDotNET
Si * va a buscar grandes volúmenes de datos de esta manera, * hay * una forma de recuperar el uso de los índices. Cree una columna calculada que sea la cadena en orden inverso. Entonces, ¿cuáles eran los tres caracteres correctos (menos significativos) ahora son los tres caracteres izquierdos (más significativos)? A continuación, indexe esa columna y busque 'WHERE LEFT (invertido, 3) = REVERSE ('190')'. (Estoy aburrido, ¿puedes decirlo?) – MatBailie
¡Gracias chicos! – Jared