Вопрос:
У меня две строки:
12, H220, H280
а также
11, 36, 66, 67, H225, H319, H336
и я хочу добавить символ A в любое место, где нет “H”, поэтому строки должны выглядеть так:
A12, H220, H280
а также
A11, A36, A66, A67, H225, H319, H336 Ответ №1select REPLACE(Test,Test,’A’+Test) from ( select REPLACE(Test,’, ‘, ‘,A’) Test from ( select REPLACE(Test,’, H’,’,H’) Test from ( select ’11, 36, 66, 67, H225, H319, H336′ as Test) S) S1 ) S2 Ответ №2
Попробуй это:
—Sample data DECLARE @T TABLE (ID INT, COL1 VARCHAR(100)) INSERT @T (ID, COL1) VALUES (1, ’12, H220, H280′), (2, ’11, 36, 66, 67, H225, H319, H336′) —Query ;WITH CTE AS ( SELECT ID, STUFF(COL1, PATINDEX(‘%[^H]%’, COL1), 0, ‘A’) COL1, 1 NUMBER FROM @T UNION ALL SELECT CTE.ID, STUFF(CTE.COL1, PATINDEX(‘%[,][ ][^HA]%’, CTE.COL1) + 2, 0, ‘A’), NUMBER + 1 FROM CTE JOIN @T T ON CTE.ID = T.ID WHERE PATINDEX(‘%[,][ ][^HA]%’, CTE.COL1) > 0 ) , CTE2 AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY NUMBER DESC) rn FROM CTE ) SELECT ID,COL1 FROM CTE2 WHERE RN = 1
Результаты:
| ID | COL1 | |—-|—————————————| | 1 | A12, H220, H280 | | 2 | A11, A36, A66, A67, H225, H319, H336 |