2015-05-09 22 views
1

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

例如为:ITEM_NAME“金手套”包含“金”,所以is_tradable =“无”

我不知道如何检查如果VARCHAR包含字符串。

我的表shcema是这样的:

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

例如为:

[item_name: gold_gloves, is_tradable: yes] 

我希望能够检查是否ITEM_NAME含有 “黄金” 这样我就可以改变is_tradable

[item_name: gold_gloves, is_tradable: no] 
+1

所以你尝试过一些代码的东西?这不是一个代码生成平台。 –

+0

您能否提供表格结构,一些示例数据和您试图获得的结果? – Mureinik

+0

@Mureinik我已经添加了一些更多的信息,你要求什么。这可能会更容易。 – Mitch8910

回答

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%' 
0

在你的mysql结果上迭代两次。

  • 首先用布尔值标记要查找的字符串。
  • 如果boolean == TRUE,则重复第二次并进行修改。
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,并将行”中的每一行s is_tradable列为'no'。