Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在字段中查找字符串的特定部分并将其替换为反斜杠_Mysql_Serialization - Fatal编程技术网

Mysql 在字段中查找字符串的特定部分并将其替换为反斜杠

Mysql 在字段中查找字符串的特定部分并将其替换为反斜杠,mysql,serialization,Mysql,Serialization,例如,这是myTable: | i | data | +---+---------+ | 1 | d\one | | 2 | d\two | | 3 | d\three | 但我想把它改成: | i | data | +---+-------+ | 1 | one | | 2 | two | | 3 | three | 我知道如何在字段中查找带有反斜杠的字符串的特定部分: SELECT * FROM myTable WHERE data LIKE 'd%\%' 我知

例如,这是
myTable

| i | data    |
+---+---------+
| 1 | d\one   |
| 2 | d\two   |
| 3 | d\three |
但我想把它改成:

| i | data  |
+---+-------+
| 1 | one   |
| 2 | two   |
| 3 | three |
我知道如何在字段中查找带有反斜杠的字符串的特定部分:

SELECT * FROM myTable WHERE data LIKE 'd%\%'
我知道如何查找和替换字段值,只有此查询不起作用:

UPDATE myTable SET data=REPLACE(data,'d\','') WHERE data LIKE 'd%\%'

你需要避开反斜杠

UPDATE myTable 
SET data = REPLACE(data,'d\\','') 
WHERE data INSTR('d\\') = 1
试试这个

UPDATE myTable SET `data`=REPLACE(`data`,'d\','');

我希望你应该把三斜杠
\\\
而不是双斜杠
\\
放在
类似的子句中
。由于我已经尝试过,我无法使用
\\\

SELECT * FROM mytable WHERE data LIKE 'd\\%';
Empty set (0.00 sec)

mysql> SELECT * FROM mytable WHERE data LIKE 'd\\\%';
+---------+
| data    |
+---------+
| d\one   |
| d\two   |
| d\three |
+---------+
3 rows in set (0.00 sec)

mysql> SELECT REPLACE(data,'d\\','') FROM mytable WHERE data LIKE 'd\\\%';
+------------------------+
| REPLACE(data,'d\\','') |
+------------------------+
| one                    |
| two                    |
| three                  |
+------------------------+
3 rows in set (0.00 sec)

mysql> UPDATE mytable SET data =  REPLACE(data,'d\\','') WHERE data LIKE 'd\\\%';
Query OK, 3 rows affected (0.06 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql> SELECT * FROM mytable;
+-------+
| data  |
+-------+
| one   |
| two   |
| three |
+-------+
3 rows in set (0.00 sec)

你不应该像你在感谢anwsers中所建议的那样使用
instr
,但是我自己找到了这个问题的答案,并且没有人提到这个来源。您必须了解\在MySQL中的作用,它是一个。无论如何,我在这个
http://\/\..
中使用了它,所以在您正在讨论的类似状态中不必使用三重反斜杠。在本例中,我还可以对该字符串使用
http%/%/..