Sql 如何在Replace()语句中使用列名作为字符串模式和替换字符串的一部分?

Sql 如何在Replace()语句中使用列名作为字符串模式和替换字符串的一部分?,sql,sql-server,Sql,Sql Server,我想替换包含来自另一列的值的列中的字符串。下面的代码是我设想的可能代码,但它不起作用: SELECT REPLACE(m1.MovieDescription,'/img/movie/'+m1.MovieID,'/img/film/'+f1.FilmID) FROM Movie m1 INNER JOIN Film f1 ON f1.MovieID = m1.MovieID 每行的MovieID和FilmID值都是唯一的。有没有办法实现上述目标,或者我需

我想替换包含来自另一列的值的列中的字符串。下面的代码是我设想的可能代码,但它不起作用:

SELECT  
    REPLACE(m1.MovieDescription,'/img/movie/'+m1.MovieID,'/img/film/'+f1.FilmID)
FROM 
    Movie m1
INNER JOIN
    Film f1  
    ON f1.MovieID = m1.MovieID

每行的MovieID和FilmID值都是唯一的。有没有办法实现上述目标,或者我需要使用带有游标的动态sql语句?

如果您想这样做,您的查询应该可以。如果ID是数字,请使用CONCAT而不是+来避免类型转换错误:

SELECT REPLACE(m1.MovieDescription,
               CONCAT('/img/movie/', m.MovieID),
               CONCAT('/img/film/', f.FilmID)
              )
FROM Movie m JOIN INNER JOIN
     Film f1 
     ON f.MovieID = m.MovieID;

你能提供样本数据和期望的结果吗?您的查询有什么问题?replacem1.MovieDescription、m.MovieID、f.FilmID、“/img/movie/”、“/img/film/”是否有效?是的,这是一个类型转换问题。康考特似乎奏效了谢谢