2016-01-11 3 views
0

У меня есть таблица, как это:Как проверить запись не содержит определенную строку?

// mytable 
+----+-------------------------------------------+ 
| id |     col      | 
+----+-------------------------------------------+ 
| 1 | Peter|423421 , Alex Jon|61333    | 
| 2 | Barmar|624321        | 
| 3 | Jack|624321 , Ali|312331 , Leonard|624321 | 
+----+-------------------------------------------+ 

нужно проверить вторую строку, если не содержащий 824326, а затем добавить эту величину , Sara|824326 в конце этого. Что-то вроде этого:

| 2 | Barmar|624321 , Sara|824326    | 

Теперь я хочу знать, как я могу проверить, что поле не содержащий разжижает номер 824326?

Вот моя попытка, мне просто нужно условие (для проверки существующих)

UPDATE mytable 
SET col = CASE WHEN col = {:val doesn't exist} // <= How to write this condition? 
        THEN CONCAT(col,':newval') 
        ELSE SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "It is duplicate"; 
      END, 
WHERE id = 2; 

Примечание1::newval это , Sara|824326 в приведенном выше запросе.

Примечание2::val - это 824326 в вышеуказанном запросе.

ответ

0

Вы должны использовать INSTR. Попробуйте следующее:

UPDATE mytable 
SET col = CASE WHEN col INSTR(col, ':val') = 0 
        THEN CONCAT(col,':newval') 
        ELSE SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "It is duplicate"; 
      END, 
WHERE id = 2; 
Смежные вопросы