Я написал следующий сценарий, чтобы удовлетворить ваши потребности, но ваша собственная личность вам нужно добавить больше логики, понять следующий сценарий
Создать фиктивный таблицу
CREATE TABLE TBL_TEMPSTRINGS(STRCOL VARCHAR(200),COL1 VARCHAR(50),
COL2 VARCHAR(50),COL3 VARCHAR(50))
значение вставки из таблицы
INSERT INTO TBL_TEMPSTRINGS
SELECT Contact_assg_list_src From dbo.FBMSRAW
Создайте хранимую процедуру, чтобы обновить фиктивные столбцы таблицы, она занимает свое имя таблицы в строке (почему вы можете заменить фиктивную таблицу с температурными именем таблицы, если вы использовали)
CREATE PROC SP_SPLITWRODS(@TABLENAME VARCHAR(50),@COLCOUNT INT)
AS
BEGIN
DECLARE @QRY VARCHAR(500)
CREATE TABLE #TBL_TEMP(STRCOL VARCHAR(200))
DECLARE @STRCOL VARCHAR(200)
DECLARE @CURRINDEX INT
DECLARE @TEMP INT
DECLARE @COLINDEX INT
DECLARE @ROWID INT
DECLARE @STRLEN INT
DECLARE @TEMPVALUE VARCHAR(50)
DECLARE @LASTWORD BIT
--CURSOR FOR YOUR TEMP TABLE
DECLARE CUR_TEMP CURSOR LOCAL FOR SELECT STRCOL FROM #TBL_TEMP
--CONSTRUCT QRY FOR FILLING YOUR TABLE
SET @QRY='INSERT INTO #TBL_TEMP SELECT STRCOL FROM ' + @TABLENAME
--FILL TABLE
EXECUTE(@QRY)
OPEN CUR_TEMP
FETCH CUR_TEMP INTO @STRCOL
WHILE @@FETCH_STATUS = 0
BEGIN
SET @CURRINDEX=1
SET @COLINDEX=1
SET @LASTWORD=0
--GET ' ' INDEX
SET @TEMP=CHARINDEX(' ',@STRCOL,@CURRINDEX)
WHILE @TEMP > 0
BEGIN
--YOU WILL GET THE VALUE SEPERATED BY SPACE
SET @TEMPVALUE=SUBSTRING(@STRCOL,@CURRINDEX,@[email protected])
--ADD MORE LOGIC TO UPDATE YOUR COLUMNS (YOUR EXTRA COLUMNS)
--CONTRUCT QRY TO UPDATE CORRESPONDING COL IN YOUR TABLE FOR THE ROW FETCHED
--THIS UPDATES ALL ROWS, YOU NEED TO ADD ONE WHERE CONDITION TO UPDATE THE ROW
SET @QRY='UPDATE ' + @TABLENAME + ' SET COL' + CAST(@COLINDEX AS VARCHAR) + '=''' + @TEMPVALUE + ''''
EXEC(@QRY)
--INCREMENT COL INDEX AFTER UPDATE OF LAST COLUMN
SET @[email protected]+1
SET @[email protected]+1
SET @TEMP=CHARINDEX(' ',@STRCOL,@CURRINDEX)
IF @TEMP=0 AND @LASTWORD=0
BEGIN
SET @TEMP=LEN(@STRCOL)+1
SET @LASTWORD=1
END
END
FETCH CUR_TEMP INTO @STRCOL
END
CLOSE CUR_TEMP
DEALLOCATE CUR_TEMP
END
Execute ваш прок
EXEC SP_SPLITWRODS 'TBL_TEMPSTRINGS',1
посещайте обновленный фиктивная таблица
SELECT * FROM TBL_TEMPSTRINGS
В настоящее время обновляется 3 столбца, разделенных пробелом, вам нужно добавить свою собственную логику для обновления столбцов на основе полученной строки (разделенной пробелом).
Надеется, что это помогает
TSQL не большой инструмент для манипулирования строками. Есть ли причина, по которой вы пытаетесь сделать это на сервере? –
@Damien_The_Unbeliever да, потому что моя работа - очистка данных, поэтому я не могу использовать ничего, кроме этого. –
столбцы фиксированы, я имею в виду максимальное количество пробелов там? можете ли вы считать это до 50? –