删除nvarchar SQL中逗号后的最后一个值



我有一个列(Col1(的nvarchar(50)值如下:'17031021__,0,0.1,1'。我想用这个值更新另一列(Col2(,但删除最后一个逗号后的最后一个数字(例如:'170310 21__,,0.1'(。我想我需要这样的东西:

CREATE TABLE table1 (
Col1 nvarchar(50),
Col2 nvarchar(50)
);
UPDATE table1
SET Col1 =  '17031021__,0,0.1,1'
Select reverse(stuff(reverse(Col1), 1, 1, '')) As Col2

这不太正确。实现这一点最简单的方法是什么?

以下内容将为您提供领先优势。

SQL

-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KEY, tokens NVARCHAR(100));
INSERT INTO @tbl (tokens) VALUES
('17031021__,0,0.1,1');
-- DDL and sample data population, end
SELECT *
, LEFT(tokens, pos) AS result
FROM @tbl 
CROSS APPLY (SELECT LEN(tokens) - CHARINDEX(',', REVERSE(tokens))) AS t(pos);

在你感到舒适之后:

UPDATE @tbl
SET tokens = LEFT(tokens, LEN(tokens) - CHARINDEX(',', REVERSE(tokens)));
-- test
SELECT * FROM @tbl;

好吧,前面提到的解决方案似乎有些过头了,所以我找到了一个更简单的解决方案。以下是我常用的:

UPDATE [dbo].[table1]
SET [Col2] = left (Col1, len(Col1) - charindex(',', reverse(Col1) + ','))

与上面的第二个解决方案非常相似,但在最后添加了','。这产生了预期的结果。

相关内容

最新更新