Utilizzo T-SQL, come potrei fare per ottenere i ultimi 3 caratteri di una colonna varchar?T-SQL Substring - 3 ultimi caratteri
Così il testo della colonna è IDS_ENUM_Change_262147_190
e ho bisogno 190
Utilizzo T-SQL, come potrei fare per ottenere i ultimi 3 caratteri di una colonna varchar?T-SQL Substring - 3 ultimi caratteri
Così il testo della colonna è IDS_ENUM_Change_262147_190
e ho bisogno 190
SELECT RIGHT(column, 3)
Questo è tutto ciò che serve.
È inoltre possibile eseguire LEFT()
allo stesso modo.
Tenere presente che se si utilizza questa clausola in una clausola WHERE
, lo RIGHT()
non può utilizzare alcun indice.
È possibile utilizzare in entrambi i casi:
SELECT RIGHT(RTRIM(columnName), 3)
O
SELECT SUBSTRING(columnName, LEN(columnName)-2, 3)
C'è un vantaggio in un modo rispetto all'altro? Ed è necessario il RTRIM (mi sembra superfluo)? – noelicus
Il lavoro può essere fatto in diversi modi e qui ho mostrato utilizzando due modi comuni. Il primo caso è più veloce della seconda. RTRIM non è obbligatorio. È usato solo per omettere ogni spazio in più sul lato destro. Grazie –
Perché più modi per pensarci sono sempre bene:
select reverse(substring(reverse(columnName), 1, 3))
No, più non è sempre meglio. –
Hai ragione. Avrai sempre tutti gli strumenti di cui hai bisogno per realizzare qualsiasi lavoro tu stia cercando di fare. La conoscenza non eguaglia il potere, immagino. –
Non sono proprio sicuro di cosa dovrebbe significare. La soluzione che proponi è inutilmente complessa e non c'è alcuna circostanza in cui sarebbe la soluzione giusta. Quindi, è cattivo. –
declare @newdata varchar(30)
set @newdata='IDS_ENUM_Change_262147_190'
select REVERSE(substring(reverse(@newdata),0,charindex('_',reverse(@newdata))))
=== Spiegazione ===
ho trovato più facile da leggere scritto così:
SELECT
REVERSE(--4.
SUBSTRING(-- 3.
REVERSE(<field_name>),
0,
CHARINDEX(-- 2.
'<your char of choice>',
REVERSE(<field_name>) -- 1.
)
)
)
FROM
<table_name>
È utile fornire una spiegazione per il codice. – krsteeve
I commenti di Stackoverflow.com possono accettare la formattazione con un semplice mark-up (formato mark-down). C'è aiuto disponibile. Per mostrare il segmento di codice, puoi aggiungere a ciascuna riga un prefisso con quattro spazi. – FooF
se si vuole trovare specificamente le stringhe che termina con i caratteri desiderati, allora questo sarebbe aiutare ..
select * from tablename where col_name like '%190'
Questo non risponde alla domanda. L'OP vuole sapere come ottenere gli ultimi 3 caratteri, indipendentemente da cosa siano, non una stringa specifica come 190. – BradleyDotNET
Se si * stanno * andando a cercare grandi volumi di dati in questo modo, * è * un modo per recuperare l'uso degli indici. Creare una colonna calcolata che è la stringa in ordine inverso. Quindi quali erano i tre personaggi (meno significativi) giusti sono ora i tre (più significativi) di sinistra. Quindi indicizzate la colonna e cercate 'WHERE LEFT (reverse, 3) = REVERSE ('190')'. (Sono annoiato, puoi dirlo?) – MatBailie
Grazie ragazzi! – Jared