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

Вопрос:

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

12, H220, H280

а также

11, 36, 66, 67, H225, H319, H336

и я хочу добавить символ A в любое место, где нет “H”, поэтому строки должны выглядеть так:

A12, H220, H280

а также

A11, A36, A66, A67, H225, H319, H336

Ответ №1
select 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 |

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