我有一个这样的字符串:
x26y6z8 / 0 | x999y0z1 / 1 | x1y5z40 / 9999 |等...
让我说我知道这个:
x1y5z40
我怎样才能找到我正在寻找的字符串的整个部分?是的
x1y5z40 / 9999
它实际上很简单,但我这样做的方式绝对不是正确的,因为我用查询向数据库发送垃圾邮件并用php完成所有操作,这显然会导致它变慢。
为了让事情变得更加困难,一旦我找到了
x1y5z40 / 9999
我需要替换它,例如:
x1y5z40 / 0
如果可能的话,我很想完全使用MySQL,也许有1个查询,有人知道我该怎么办?
答案 0 :(得分:1)
使用REPLACE()
。
update TBL
set content = REPLACE(content , 'x1y5z40/9999', 'x1y5z40/0')
来源:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace
答案 1 :(得分:0)
我认为你遗漏了字符串的组成部分由|
分隔。我认为你可以使用MySQL字符串函数来做到这一点。以下内容应该返回第二部分:
select substring_index(substring_index(col, '|x1y5z40/', 2), '|', 1)
啊,现在用0
替换第二部分。那会有点丑陋:
select replace(col,
concat('|x1y5z40/',
substring_index(substring_index(col, '|x1y5z40/', 2), '|', 1),
'|'
),
'|x1y5z40/0'
)
如果您尝试更改数据库中的数据,也可以将其表示为更新。
顺便说一下,在字符串中存储事物列表在SQL中是一个非常糟糕的主意。也许你没有选择。但SQL具有出色的数据结构,可用于存储列表,具有各种内置功能。它被称为表。你应该有一个联结表,每个实体有一行,字符串中有值。