带有replace或trim的SQL更新语句

时间:2016-03-24 11:24:57

标签: 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

4 个答案:

答案 0 :(得分:0)

如果您使用的是MSSQL,这将有效。

SELECT LTRIM(RIGHT(X, CHARINDEX(',', REVERSE(',' + X)) - 1))
FROM TableName

不确定其他数据库

答案 1 :(得分:0)

以下是进行更新的方法:

;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));

答案 2 :(得分:0)

> UPDATE table1 SET columnx = SUBSTRING(columnx,LENGTH(columnx)-8,LENGTH(columnx)+1);

我在postgresSQL上尝试了上面的查询,它对我来说很好。

答案 3 :(得分:0)

以下内容也应该有效:

SELECT MID(column,len(column)-7,8) AS new_value
FROM table_name;

(如果' sprint'之后的数字是单个数字,则此方法有效)