use*_*758 10 mysql replace backslash
我有以下问题:
我有一个表T,其列名称包含名称.名称具有以下结构:
甲\\乙\ C
你可以这样创建自己:
create table T ( Name varchar(10));
insert into T values ('A\\\\B\\C');
select * from T;
Run Code Online (Sandbox Code Playgroud)
现在,如果我这样做:
select Name from T where Name = 'A\\B\C';
Run Code Online (Sandbox Code Playgroud)
那不起作用,我需要逃避\(反斜杠):
select Name from T where Name = 'A\\\\B\\C';
Run Code Online (Sandbox Code Playgroud)
精细.
但是我如何自动将其作为字符串名称?
像下面这样的东西不会这样做:
select replace('A\\B\C', '\\', '\\\\');
Run Code Online (Sandbox Code Playgroud)
我明白了: A\\\BC
有什么建议?
提前谢谢了.
您必须使用“逐字字符串”。使用该字符串后,您的替换函数将如下所示
Replace(@"\", @"\\")
Run Code Online (Sandbox Code Playgroud)
我希望它对你有帮助。
文字A\\B\C必须编码为A\\\\A\\C,并且参数replace()也需要转义:
select 'A\\\\B\\C', replace('A\\\\B\\C', '\\', '\\\\');
Run Code Online (Sandbox Code Playgroud)
输出(请参见在 SQLFiddle 上运行):
A\\B\C A\\\\B\\C
Run Code Online (Sandbox Code Playgroud)
所以使用替换没有什么意义。这两个语句是等价的:
select Name from T where Name = replace('A\\\\B\\C', '\\', '\\\\');
select Name from T where Name = 'A\\\\B\\C';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25448 次 |
| 最近记录: |