2013-10-24 2 views
-1

У меня есть данные в текстовом столбце, который выглядит как xxxxx.x.xx мне нужно, чтобы получить строку в представление с форматом xxxxx.x (удаление задней .xx).обрезки подстроки в колонке SQL сервера

Я не уверен, как это сделать. Любая помощь будет оценена по достоинству.

Думаю, мне нужно было бы получить длину от начала до второго "." а затем левую эту длину.

Я также задаюсь вопросом, может ли это быть сделано как выражение столбца или ему нужна функция?

Вот еще один поворот. Как бы я обрабатывал ту же проблему, если длина символа является переменной, например xxxxxx.xx.x и xxxxx.x.x?

ответ

2

Вы также можете попробовать это:

SELECT 
    REVERSE(
     SUBSTRING(
      REVERSE(@word), 
      CHARINDEX('.', REVERSE(@word))+1, 
      LEN(REVERSE(@word)) 
       ) 
      ) 
FROM yourTable 

SQLFiddle

Это решение является общим, поэтому оно будет работать и в случае, если у вас есть xx.xxxx.xx.xxx или любое другое количество букв, разделенных точками.

+0

@BogdanSahlean 'RTRIM' и' LTRIM' были бы полезны в такой ситуации –

+0

отлично поработали! благодаря – Ryan

1

Это может быть достигнуто с помощью выражения:

left(@s, charindex('.', @s, charindex('.', @s) + 1) - 1) 

(где @s является ваше значение переменной)

Интернет демо: http://www.sqlfiddle.com/#!3/d41d8/23448

+0

- Я добавил еще одну деталь к моему сообщению. – Ryan

+0

@ Ryan, который все равно будет работать. И, кстати, для такой простой проблемы вы должны иметь возможность добавлять все детали с самого начала. – GolfWolf

1
select 'xxxxx.x.xx' as original 
,Replace('xxxxx.x.xx',Right('xxxxx.x.xx',3),'') as new 
Смежные вопросы