Как вернуть первые несколько символов в строке, обрезав последние 8?(SQL Server 2008) - PullRequest
2 голосов
/ 27 марта 2012

У меня есть несколько таких строк:

 'ABCD99991000'
 'XYZ79991000'
 'E2493991039'

Что меня действительно волнует, так это все до последних 8 символов.Проблема в том, что символы, которые меня интересуют в начале строки, имеют переменную длину.В приведенных выше примерах я хотел бы получить следующее:

 'ABCD'
 'XYZ'
 'E24'

Функция RIGHT () была бы идеальной, если бы я мог заставить ее возвращать все до результатов.Например, RIGHT (E2499991039,8) возвращает числа, которые я не хочу!Как вернуть силу переменной длины перед последними 8 символами в моем запросе?

SQL Server 2008

Ответы [ 5 ]

15 голосов
/ 27 марта 2012

См. SUBSTRING

select substring(column_name, 1, len(column_name)-8)
from table_name
5 голосов
/ 27 марта 2012
declare @str varchar(50)

set @str = 'ABCD99991000'

select LEFT(@str, len(@str) - 8)

(нет проверки ошибок для Len (@str) <8) </p>

так

select LEFT(colname, LEN(colname) - 8) 
from table_name 
2 голосов
/ 27 марта 2012
BEGIN
declare @s varchar(16)
select @s = 'abcdefghij'
--
SELECT LEFT(@s, LEN(@s) - 8)
END
2 голосов
/ 27 марта 2012
Left(column, length(column - 8))
2 голосов
/ 27 марта 2012
LEFT(E2499991039,LEN(E2499991039)-8) 
...