Как заменить первый и последний символ столбца в sql server?
у меня есть столбец базы данных и ее дают строку вида ,Recovery, Pump Exchange,
.
Я хочу, чтобы удалить первую и последнюю запятую из строки.
Ожидаемый Результат : Recovery, Pump Exchange
.
7 ответов
можно использовать SUBSTRING
для этого:
SELECT
SUBSTRING(col, 2, LEN(col)-2)
FROM ...
очевидно, что еще лучшим подходом было бы не ставить там в первую очередь ведущие и конечные запятые, если это вариант.
Я хочу удалить последнюю и первую запятую, только если в противном случае нет.
выражение становится немного сложнее, но идея остается той же:
SELECT SUBSTRING(
col
, CASE LEFT(@col,1) WHEN ',' THEN 2 ELSE 1 END
, LEN(@col) -- Start with the full length
-- Subtract 1 for comma on the left
- CASE LEFT(@col,1) WHEN ',' THEN 1 ELSE 0 END
-- Subtract 1 for comma on the right
- CASE RIGHT(@col,1) WHEN ',' THEN 1 ELSE 0 END
)
FROM ...
в качестве альтернативы методу dasblinkenlight вы можете использовать replace:
DECLARE @words VARCHAR(50) = ',Recovery, Pump Exchange,'
SELECT REPLACE(','+ @words + ',',',,','')
использование LEN может привести к обратным результатам, потому что LEN игнорирует конечные пробелы. Они могут быть добавлены из - за ansi_padding по умолчанию ON. Итак, вам понадобится RTRIM.
для полноты, я добавил LTRIM тоже...
REVERSE(SUBSTRING(REVERSE(RTRIM(LTRIM(SUBSTRING(MyCol, 2, 8000)))), 2, 8000))
использовать Substring()
:
SET @String=SUBSTRING(@String ,2,Len(@String)-2)
SUBSTRING()
возвращает часть выражения.
синтаксис:
SUBSTRING ( expression ,start , length )
попробуйте так:
if(Substring(@mykeyword, 1,1) = ',' and Substring(@mykeyword, LEN(@mykeyword) - 1, LEN(@mykeyword))=',')
SET @mykeyword = Substring(@mykeyword, 2, LEN(@mykeyword) - 2)
SELECT LEFT(RIGHT(',Recovery, Pump Exchange,',LEN(',Recovery, Pump Exchange,')-1),LEN(',Recovery, Pump Exchange,')-2)
для удаления того же символа вы можете использовать ниже системную функцию отделка
только с 2017
DECLARE @str VARCHAR(MAX) = '[REMOVE THIS CLOSE BRACKET]'
SELECT TRIM('[]' FROM @str)
но для удаления разных символов вам нужно использовать подстроку
SELECT SUBSTRING(@str,2,LEN(@str)-2)