2014-01-07 3 views
0

Я структуру таблицы, как этотSQL UPDATE с LIKE => 0 затронутых строк

iid     int(11) Auto Increment 
itemId    varchar(50) 
itemTitle   varchar(100)  
itemSubTitle  varchar(200)  
itemDescription  text  
itemKeywords  text  
itemOrderId   int(11) 
itemContentType  varchar(10) 
itemIconURI   varchar(200)  
itemLargeIconURI varchar(200)  
itemOpenData  text  
itemStatus   tinyint(4) 
itemFileName  varchar(255)  
syncCategories  varchar(255)  
itemShow   tinyint(4) 
itemCrc    varchar(40) 
itemLastUpdate  int(11) 

Одна запись таблицы получила "hn.applicant.draft" в поле itemKeywords. Когда я попробовать этот запрос,

SELECT * FROM item WHERE itemKeywords LIKE '%applicant%'

право записи возвращается. Но если я пытаюсь обновить как этот

UPDATE item SET itemCrc='d41d8cd98f00b204e9800998ecf8427e' WHERE itemKeywords LIKE '%applicant%'

это приводит к «Запрос выполняется в порядке, 0 затронутых строк.»

В чем проблема?

+7

Случайная мысль - может быть, 'itemCrc' уже имеет значение' d41d8cd98f00b204e9800998ecf8427e 'для этой записи? – Galz

+0

@ Galz, если это так. Не следует ли в любом случае обновлять строку? –

+0

@ Spin0us Является ли ваше имя таблицы 'item '? вы можете запросить другую таблицу –

ответ

0

Как Galz говорит, что значение уже было хорошим. Вот почему пострадали 0 строк. Я пытался отладить скрипт php, проверив файл resquet, и не замечаю этого. Я чувствую себя настолько глупо :)

+2

Не чувствуйте (глупо). Многие другие СУБД не проверяют существующее значение и все равно выполняют операцию обновления. MySQL является исключением в этом отношении. –

Смежные вопросы