2012-07-02 3 views
0

У меня есть главная таблица, в которую я вставляю данные из таблицы temp импорта. Данные не требуют много массирования, но один столбец, который делает, относится к измерениям. Размеры, которые я записываю, - длина, ширина и высота. Они представляют собой три отдельных столбца, varchar (10) в каждом.Сплит-строка на встроенном символе

Таблица импорта объединяет их в один столбец, разделенный символом «x», поэтому LxWxH.

В конечном счете я пишу это преобразование в исполняемую хранимую процедуру, но я застрял на этом расколе. Может кто-то дать мне руку о том, как это кодировать?

Шаблон моей вставки является: Предполагая, что главная таблица представляет идентификатор (целое), длина VARCHAR (10), ширина VARCHAR (10), высота VARCHAR (10) Предполагая, что таблица импорта является идентификатор (целое), Dims VARCHAR (50)

данных выглядит (от импорта):

1 1.2x3.5x9.5 
2 2.4x3.5x8.5 
etc etc 

код:

insert into [mastertable] 
id, length, width, height 
select 
from [importtable] 

Любая помощь приветствуется! Версия SQL Server - 2008 г.

ответ

2
INSERT dbo.mastertable (id, length, width, height) 
SELECT 
    ID, 
    L, 
    W = SUBSTRING(R, 1, CHARINDEX('x', r)-1), 
    H = SUBSTRING(R, LEN(R)-CHARINDEX('x', REVERSE(r))+2, 255) 
FROM 
(
    SELECT ID, LWH, 
    L = SUBSTRING(LWH, 1, CHARINDEX('x', LWH)-1), 
    r = SUBSTRING(LWH, CHARINDEX('x', LWH)+1, 255) 
    FROM dbo.importtable 
) AS x; 
+0

Yeesh .. Это был глоток, но это определенно сработало. Благодаря! – optionsix

+0

@optionsix Да, я никогда не утверждал, что это было красиво. Есть, вероятно, 30 или 40 способов сделать это, все из которых имеют разные уровни или читаемость/красивость. –

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