我有一个数据库列,它提供了一个类似,Recovery, Pump Exchange,
的字符串。
我想从字符串中删除第一个和最后一个逗号。
预期结果:Recovery, Pump Exchange
。
答案 0 :(得分:21)
您可以使用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 ...
答案 1 :(得分:4)
除了dasblinkenlight的方法,你可以使用replace:
DECLARE @words VARCHAR(50) = ',Recovery, Pump Exchange,'
SELECT REPLACE(','+ @words + ',',',,','')
答案 2 :(得分:3)
使用LEN可能会适得其反,因为LEN会忽略尾随空格。由于ANSI_PADDING默认为ON,因此可以添加这些。所以,你需要RTRIM。
为了完整起见,我也添加了LTRIM ......
REVERSE(SUBSTRING(REVERSE(RTRIM(LTRIM(SUBSTRING(MyCol, 2, 8000)))), 2, 8000))
答案 3 :(得分:1)
使用Substring()
:
SET @String=SUBSTRING(@String ,2,Len(@String)-2)
SUBSTRING()
返回表达式的一部分。
语法:
SUBSTRING ( expression ,start , length )
答案 4 :(得分:0)
试试这样:
if(Substring(@mykeyword, 1,1) = ',' and Substring(@mykeyword, LEN(@mykeyword) - 1, LEN(@mykeyword))=',')
SET @mykeyword = Substring(@mykeyword, 2, LEN(@mykeyword) - 2)
答案 5 :(得分:0)
SELECT LEFT(RIGHT(',Recovery, Pump Exchange,',LEN(',Recovery, Pump Exchange,')-1),LEN(',Recovery, Pump Exchange,')-2)
答案 6 :(得分:0)
要删除相同的字符,可以使用下面的系统功能TRIM
仅来自 2017
DECLARE @str VARCHAR(MAX) = '[REMOVE THIS CLOSE BRACKET]'
SELECT TRIM('[]' FROM @str)
但是对于其他字符删除,您需要使用SUBSTRING
SELECT SUBSTRING(@str,2,LEN(@str)-2)
答案 7 :(得分:0)
这是一篇旧文章,但是我决定添加我的解决方案,因为它将删除逗号分隔的字符串的第一个和最后一个逗号,而不会删除其他逗号,并且还将处理不是以逗号开头的字符串:
DECLARE @words VARCHAR(50) = ',Recovery, Pump Exchange,'
SELECT REPLACE(SUBSTRING(@words , 1, 1),',','') + SUBSTRING(@words, 2, LEN(@words)-2) + REPLACE(SUBSTRING(@words, LEN(@words), 1), ',', '')
答案 8 :(得分:0)
您可以尝试使用SUBSTRING来替换表中列的第一个和最后一个字符。
在此示例中,我使用了双引号(“)而不是逗号(,)。如果列值以双引号(”)开头并以双引号结束,则它将仅替换第一个和最后一个字符(“)。 (“)。
DECLARE @tblProducts TABLE (ProductName VARCHAR(100))
INSERT INTO @tblProducts VALUES ('"Recovery 10x12" Pump Exchange"')
INSERT INTO @tblProducts VALUES ('"Recovery Pump Exchange 10x12""')
INSERT INTO @tblProducts VALUES ('Recovery Pump Exchange 10x12"')
--REPLACE Last Char(")
UPDATE @tblProducts SET ProductName = SUBSTRING(ProductName, 1, len(ProductName) - 1) FROM @tblProducts WHERE ProductName LIKE '"%' AND ProductName LIKE '%"'
--REPLACE First Char(")
UPDATE @tblProducts SET ProductName = SUBSTRING(ProductName, 2, len(ProductName) - 1) FROM @tblProducts WHERE ProductName LIKE '"%'
SELECT * FROM @tblProducts
结果: