带有replace或trim的SQL update语句
我有一个包含如下数据的列的表带有replace或trim的SQL update语句,sql,replace,Sql,Replace,我有一个包含如下数据的列的表 Column X Sprint 1, Sprint 2, Sprint 3 Sprint 1 Sprint 2, Sprint 3 Sprint 4 Sprint 3, Sprint 4 我想做的是更新列中的数据,只保留最后一个逗号后的文本,因此最终结果将是: Column X Sprint 3 Sprint 1 Sprint 3 Sprint 4 Sprint 4 如果您使用的是MSSQL,这将起作用 SELECT LTRIM(RIGHT(X, CHARIND
Column X
Sprint 1, Sprint 2, Sprint 3
Sprint 1
Sprint 2, Sprint 3
Sprint 4
Sprint 3, Sprint 4
我想做的是更新列中的数据,只保留最后一个逗号后的文本,因此最终结果将是:
Column X
Sprint 3
Sprint 1
Sprint 3
Sprint 4
Sprint 4
如果您使用的是MSSQL,这将起作用
SELECT LTRIM(RIGHT(X, CHARINDEX(',', REVERSE(',' + X)) - 1))
FROM TableName
不确定其他数据库以下是执行更新的方法:
;WITH ToUpdate AS (
SELECT COLUMN_X,
LTRIM(RIGHT(COLUMN_X, IIF(t.i = 0, LEN(COLUMN_X), t.i - 1))) AS new_X
FROM mytable
CROSS APPLY (VALUES (CHARINDEX(',', REVERSE(COLUMN_X)))) AS t(i)
)
UPDATE ToUpdate
SET Column_X = new_X
注意:上述操作在SQL Server 2012+中有效
MySQL中的以下工作:
UPDATE mytable
SET COLUMN_X = LTRIM(SUBSTRING_INDEX(COLUMN_X, ',', -1));
我已经在postgresSQL上尝试了上述查询,它对我来说效果很好。以下内容也应该有效:
SELECT MID(column,len(column)-7,8) AS new_value
FROM table_name;
(如果“sprint”后面的数字是一位数字,则此选项有效)用您正在使用的数据库标记您的问题。另外,请解释为什么要在一列中存储多个值。正确的方法是使用另一个表作为列表。列中以逗号分隔的值是一团乱。这只会给你带来很多麻烦。你的数据库上有正则表达式替换吗?这将是最简单、最易读的方法。
SELECT MID(column,len(column)-7,8) AS new_value
FROM table_name;