MySQL替换单个反斜杠

6

试图在大型数据库中替换单个反斜杠。原本打算在一个列上运行更新替换查询,但是我无法找到如何替换单个反斜杠。由于之前的一些错误更新,这些斜杠需要更改为另一个字符,它们没有转义任何内容也不执行任何相关功能。

SELECT
REPLACE (
    "Some\s string\s with slashe\s",
    '\\',
    '  something  '
)

当我运行这段代码时,输出是:"带有斜杠的字符串"

有没有办法对单个反斜杠进行真正的替换?无论我在替换参数中输入什么,它都只会消除单个反斜杠,但实际上并没有替换它。不确定这是一个bug还是我漏掉了什么。

我已经尝试过:

SELECT
REPLACE (
    "Some\s string\s with slashe\s",
    '\',
    '  something  '
)

我得到了以下结果:

[错误] 1064 - 您的SQL语法有误,请查阅与您的MySQL服务器版本相对应的手册,以了解正确的语法用法。错误出现在第1行,附近为\'\)\'。

3个回答

4

REPLACE( ) 不需要转义

select replace("Some\s string\s with slashe\s", '\\', '  something  ');

更新 1

我认为你想永久替换它。对吗?使用 UPDATE 而不是 SELECT

UPDATE tableName
SET    columnName = replace(columnName, '\\', '#');

1
如上所述,我收到了“[Err] 1064 - 您的SQL语法有误;请检查与您的MySQL服务器版本相对应的手册,以获取正确的语法使用方式,位于第1行附近”。 - Jestep
@Jestep,我刚刚更新了答案。你想要永久替换该列吗?还是只想投影它? - John Woo
我现在明白了。刚刚对几列进行了测试。更新是有效的,但如果我只是尝试运行选择语句,它会显示不正确的输出。我只是使用选择语句在静态字符串上验证输出是否正确。 - Jestep
这是因为SELECTUPDATE是两个不同的操作。使用SELECT所做的任何操作都不会对数据库进行更改。 - John Woo

0

试一下

SELECT REPLACE ("带有斜杠的某些字符串",'\"','' )


-2

replace()函数的参数不需要转义:

select replace('A\B\C', '\', '\');

输出结果:

A\\\\B\\C

所以这将会起作用:

select Name from T where Name = replace('A\\B\C', '\', '\\');

如图所示 这里


2
我得到了"[Err] 1064 - 您的SQL语法有误;请检查与您的MySQL服务器版本相对应的手册,以获取正确的语法使用方式,在第1行附近出现了')'"。 - Jestep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接