如何在SQL中的SELECT语句中替换多列中的相同内容?

web*_*r69 4 sql replace

我想做一个SELECT语句,我在多列中用(\n)替换每个(").现在我该怎么做?

是否可以在SELECT语句中使用REPLACE函数定位多个列?

我知道这是无效的代码,但只是想象我的意思:

SELECT REPLACE(firstColumn, anotherColumn, '"', '\"') 
FROM testTable
Run Code Online (Sandbox Code Playgroud)

这当然不起作用,因为REPLACE函数只需要三个参数.

我真的需要帮助,因为我找不到任何对我有用的东西.

提前致谢!

[编辑 - 24.04.2012 - 16:20 UTC + 01:00]

对于那些可能有类似问题的人,这是我的解决方案:我使用正则表达式来构建我的SELECT REPLACE语句,如下所示:

Regex: {(^[^, ]+,)}|( {[^, ]+,})|( {[^, ]+$})
Run Code Online (Sandbox Code Playgroud)

为了使用它,你需要你想要通过逗号和空格分隔的所有列,如下所示:

ID, Gender, Firstname, Lastname, Street, Zip, City, EMail, Age,

然后你需要一个工具(在我的情况下是Visual Studio),它能够替换为带标记的表达式(在正则表达式中的{}括号之间),并用以下内容替换它:

REPLACE(\1\2\3 'replaceMe', 'withMe') AS \1\2\3

希望这可以帮助任何可能遇到类似问题的人.它可能不是最好的解决方案,但它对我有用.感谢您的快速帮助!

xan*_*xan 6

我认为你唯一明智的选择就是在每一列上单独使用替换.

SELECT
    REPLACE(firstColumn, '"', '\"'),
    REPLACE(secondColumn, '"', '\"')
FROM testTable
Run Code Online (Sandbox Code Playgroud)

您可以对数据进行一些巧妙的旋转,以便仅应用REPLACE一次,但我没有看到好处.

如果您正在进行的实际替换非常复杂,那么您可以编写一个函数来执行此操作以节省代码混乱和重复.