2014-10-23 5 views
0

У меня есть довольно жесткий запрос, чтобы сделать в SQL Server 2008, но я не в состоянии сделать все ...жесткого запрос SQL Server 2008

У меня есть два вида записей:

16HENFC******** (8 numbers after more 'FC') 
16HEN******* (7 numbers after more 'EN') 

Мне нужно выбрать * (которые фактически являются номерами) и добавить 0 в начале второй формы записи, чтобы иметь только 8 длинных выбранных значений.

Затем мне нужно вставить результат в пустой стол.

Я думаю, что я сделал первую часть, которая:

SUBSTRING(SELECT mycolumn1 FROM mytable1 WHERE mycolumn1 LIKE '16HENFC%', 5, 8) ; 

В заключение,

У меня есть эти записи в моей колонке:

'16HENFC071052' 
'16HEN5130026' 

Я хочу, чтобы выбрать их и трансформировать их вставить в другую колонку:

'05130026' 
'FC071052' 

[EDIT] =>

CREATE TABLE nom_de_la_table 
(
    colonne1 VARCHAR(250), 
    colonne2 VARCHAR(250) 
) 

INSERT INTO nom_de_la_table (colonne1) 
VALUES 
('16HEN5138745'), 
('16HENFC071052v2'), 
('16HENFC78942878'), 
('16HEN4830026'), 
('16HEN7815934'), 
('16HENFC74859422'), 
('16HEN9687326'), 
('16HENFC74889639'), 
('16HEN9798556'); 

[и др ...]

Так два различных типа записей, и я хочу, чтобы вставить результат того, что вы сделали первый только с двумя записями в другой столбец, но для 956 записей моей таблицы. И это результат с двумя примерами:

'05130026' 
'FC071052' 

ответ

1

Левая заполнение строки - относительно простой запрос. Вот пример:

select right(replicate('0',8) + right(test,len(test)-len('16HEN')),8) 
from (
    select '16HENFC071052' as test 
    union all 
    select '16HEN5130026' as test 
    ) z 

Используйте повторности слева заполнения ваша строка с количеством цифр, которые вы хотите, чтобы в конечном итоге с. Приложите нужную строку, в этом случае отделите свой префикс, взяв правильные символы X, где X = len(target) - len(prefix). Наконец, возьмите правильные символы всей строки, равной вашей желаемой длине.

+0

Wahou ... Это хорошо работает, и я думаю, что начинаю понимать, как это сделать, но это довольно сложно. Я плохо разбираюсь в SQL, просто основы CRUD. Но два кода являются примерами, я должен сделать это для всех кодов, которые выглядят так: «H16HENFC ******» и «16HEN *******», в базе данных есть 956 записей , Мне нужно скопировать результат того, что вы сделали в другом столбце для 956 записей. – Gauthier

+0

У меня также есть некоторые сложности с «union all», но я ищу его на google – Gauthier

+0

@Gauthier: Вы либо собираетесь нужно настроить таблицу выборочных данных на сайте, например sqlfiddle.com, или предоставить различные шаблоны, которые вы ищете или хотите решить в своем вопросе. –

Смежные вопросы