我有一个T-SQL脚本,需要在其中更改返回值。它正在存储在视图中。脚本如下:
WITH live AS
(
SELECT *
, ROW_NUMBER() OVER (PARTITION BY [Customer Name] ORDER BY [DateTime] DESC) AS last_occ
, CONVERT(INT,[Count]) AS CountInt
FROM [Database].[Table]
)
SELECT *
FROM live
我需要挤压
REPLACE([Column_name], 'orig_string', 'new_string')
在某个地方,但每个位置都不断返回一个错误。
注意:我需要这个来适应原始字符串,所以我想知道我是否可以使用SWITCH
或IF
函数。
所以现在我只面临剩下的任务如何将其封装到条件中
String 1 => Adjusted_String 1
String 2 => Adjusted_String 2
String 1 => Adjusted_String 1
String 3 => Adjusted_String 3
String 3 => Adjusted_String 3
String 1 => Adjusted_String 1
如果不会导致意外的替换,那么只运行多次替换可能是最简单的
SELECT REPLACE(REPLACE(REPLACE(originalcolumn
,'String 1', 'Adjusted_String 1')
,'String 2', 'Adjusted_String 2')
,'String 3', 'Adjusted_String 3')
如果你想有条件地这样做:
SELECT
CASE
WHEN originalcolumn LIKE '%String 1%' THEN REPLACE(originalcolumn, 'String 1', 'Adjusted_String 1')
WHEN originalcolumn LIKE '%String 2%' THEN REPLACE(originalcolumn, 'String 2', 'Adjusted_String 2')
WHEN originalcolumn LIKE '%String 3%' THEN REPLACE(originalcolumn, 'String 3', 'Adjusted_String 3')
END as ...
我设法通过使其工作
WITH live AS
(
SELECT * ,
ROW_NUMBER() OVER (PARTITION BY [Customer Name] ORDER BY [DateTime] DESC) AS last_occ,
CONVERT(INT,[Count]) AS CountInt,
REPLACE([Column_name], 'orig_string', 'new_string') AS NewString
FROM [Database].[Table]
)
SELECT * FROM live