mysql - 在字符串中使用正斜杠 (/) 进行查询

标签 mysql

我正在尝试在 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/

相关文章:

mysql - 如何在 SUM 生成的列上找到 MAX 值

mysql innodb 与 myisam 插入

mysql - 我疯狂地试图解决错误,但我做不到。用mysql。执行 INSERT INTO 时出现外键错误。

mysql - MySQL 中货币汇率的理想数据类型

mysql - 如何从 JSON 列获取所有不同的属性名称?

java - c3p0 连接池不支持 20 个用户

php - 从表到表的复杂 MySQL 获取关系和条件

mysql - 如何将ListBox项目分别插入到MySQL的不同行?

php - MySql - 一对多关系

mysql - SQL查询从表中获取前两个最高列值