我正在尝试在 MySql 中运行查询,以将包含斜线 (/) 的参数字符串(文本类型)的一部分替换为某些 joomla 项目菜单。
例如:健身/运动是字符串的一部分,我需要将其更改为健身和运动
在表中,joomla 的字符串是这样写的:
......................
"page_title":"维琴察健身/运动",
......................
首先我尝试选择:
select id,params FROM mytable WHERE params LIKE '%Fitness/Sport%';
然后我尝试直接替换
UPDATE mytable SET params = REPLACE(params,'Fitness/Sport','Fitness & Sport') WHERE alias ='fitness-sport';
但是两个查询都返回 0 结果。
(每个别名有 139 行包含 abc/xyz)
@Vladimir 演示了查询通常使用正斜杠并仅搜索它
select id,params FROM mytable WHERE params LIKE '%/%';
查询工作正常,并且还可以搜索不带斜杠的字符串 (我不能只查询前斜杠,因为它会影响其他参数字符串)
我不明白为什么不起作用, 有什么建议吗?
谢谢
最佳答案
select REPLACE('string abc/xyz', 'abc/xyz','abc & xyz');
+--------------------------------------------------+
| REPLACE('string abc/xyz', 'abc/xyz','abc & xyz') |
+--------------------------------------------------+
| string abc & xyz |
+--------------------------------------------------+
这意味着替换子句工作正常,但如果您收到 0,则意味着您首先没有 params LIKE '%abc/xyz%' AND alias ='myalias'
的行查询正是这样说的。
这是我的简单示例:
cli [db]> create table simpleTest (id int key, params varchar(50) );
Query OK, 0 rows affected (0.00 sec)
cli [db]> insert into simpleTest values
-> (1, 'params test abc/xyz 1'),
-> (2, 'params test abc/xyz 2'),
-> (3, 'params test abc/xyz 3');
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
cli [db]> select * from simpleTest;
+----+-----------------------+
| id | params |
+----+-----------------------+
| 1 | params test abc/xyz 1 |
| 2 | params test abc/xyz 2 |
| 3 | params test abc/xyz 3 |
+----+-----------------------+
3 rows in set (0.00 sec)
cli [db]> update simpleTest set params = replace(params, 'abc/xyz', 'abc & xyz');
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
cli [db]> select * from simpleTest;
+----+-------------------------+
| id | params |
+----+-------------------------+
| 1 | params test abc & xyz 1 |
| 2 | params test abc & xyz 2 |
| 3 | params test abc & xyz 3 |
+----+-------------------------+
3 rows in set (0.00 sec)
它对我有用......
关于mysql - 在字符串中使用正斜杠 (/) 进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42253337/