Добавить символ в строку в SQL

Вопрос: У меня две строки: 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')

Вопрос:

У меня две строки:

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

Попробуй это:

Демо-версия SQL Fiddle

—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 |

Оцените статью
Добавить комментарий