2011-12-14 89 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

相关问题