Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有replace或trim的SQL update语句_Sql_Replace - Fatal编程技术网

带有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;