如果ROW2包含“string”,MySQL会更改ROW1

时间:2015-05-09 11:43:05

标签: php mysql sql sql-update

我有一个数据库中的项目列表。我有列item_nameis_tradable。我希望能够浏览item_name中的名称并检查它们是否包含某个字符串,例如“金”。如果它们包含该字符串,请将is_tradable从“是”更改为“否”。

例如:item_name“gold gloves”包含“gold”,所以is_tradable =“no”

我不确定如何检查varchar是否包含字符串。

我的表shcema是这样的:

[Item_name, varchar(255), PrimaryKey]    
[is_tradable, varchar(255) ]    
[other random rows not needed here]

e.g:

[item_name: gold_gloves, is_tradable: yes]

我希望能够检查item_name是否包含“gold”,以便我可以更改is_tradable

 [item_name: gold_gloves, is_tradable: no]

3 个答案:

答案 0 :(得分:1)

您可以使用like运算符检查名称是否包含gold

UPDATE my_table
SET    is_tradable = 'no'
WHERE  item_name LIKE '%gold%'

请注意,根据表格的排序规则,LIKE可能会区分大小写,也可能不区分大小写。如果您不确定表中的值,可以强制所有值为小写:

UPDATE my_table
SET    is_tradable = 'no'
WHERE  LOWER(item_name) LIKE '%gold%'

答案 1 :(得分:1)

假设您熟悉连接细节和其他细节,并假设表名为items,您可以这样做:

使用PDO:

// Assuming $db contains the connection
$stmt = $db->prepare("UPDATE items SET is_tradable='no' WHERE Item_name LIKE '%Gold%' OR Item_name LIKE %gold%");
$stmt->execute();

以上陈述的作用是搜索Item_name"包含"的每一行。字符串Goldgold并将行is_tradable列设置为' no'。

答案 2 :(得分:0)

对你的mysql结果迭代两次。

  • 首先使用布尔值标记您要查找的字符串。
  • 如果boolean == TRUE,则再次迭代并进行修改。