2011-12-14 109 views
2

我在mysql中有一個表格:(_table),有幾列,其中一列包含一段文字。我想用文本塊(text)搜索該列,看它是否包含特定文本[JOB]。如果是這樣,我想在另一列中插入Ydata)。或者,如果它包含[JOB-M],我希望它在前面提到的列(data)中插入M,如果它不包含[JOB-M][JOB],則應該插入N。每次更新或插入字段(text)時,我都希望它遵循此過程。 我收集我需要創建一個存儲過程和一個觸發器,但我有很多麻煩...任何提示?
-Natmysql存儲過程和觸發器

p.s.我知道如何在Excel中做到這一點,但將其轉移到MySQL一直很麻煩。這裏是我的Excel公式:

=IF(ISNUMBER(SEARCH("[JOB]",X6)),"Y",IF(ISNUMBER(SEARCH("[JOB-M]",X6)),"M", "N")) 

回答

4

INSERT trigger and an UPDATE trigger將這樣的伎倆:

mysql> CREATE TRIGGER TRG_BI_JOBYMN BEFORE INSERT ON _table 
    -> FOR EACH ROW 
    -> SET NEW.data = CASE 
    ->     WHEN `text` LIKE '%[JOB]%' THEN 'Y' 
    ->     WHEN `text` LIKE '%[JOB-M]%' THEN 'M' 
    ->     ELSE        'N' 
    ->    END; 

mysql> CREATE TRIGGER TRG_BU_JOBYMN BEFORE UPDATE ON _table 
    -> FOR EACH ROW 
    -> SET NEW.data = CASE 
    ->     WHEN `text` LIKE '%[JOB]%' THEN 'Y' 
    ->     WHEN `text` LIKE '%[JOB-M]%' THEN 'M' 
    ->     ELSE        'N' 
    ->    END; 
+0

謝謝!該查詢正確執行,但顯然觸發器不會在我的godaddy共享託管的Linux帳戶,因爲他們沒有更新到MySQL 5.1!看起來我必須切換主機或升級到專用服務器。當我把所有的東西都整理出來的時候,我會使用這個信息!太感謝了! – nat 2011-12-14 19:43:17