2015-05-09 65 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'。