代码之家  ›  专栏  ›  技术社区  ›  Scott

如果在haystack中找不到指针,那么使用substr()和instr()的MySQL查询将失败

  •  0
  • Scott  · 技术社区  · 14 年前

    我需要在MySQL表中生成一个伪键列,它被定义为point\u title字段的第一部分(最多一个空格,如果有的话),与记录id连接在一起。

    示例数据:

    id      point_title       pseudo_key
    _____________________________________
    123     Scott R.          scott123
    124     John R.           john124
    125     Stacey J.         stacey125
    126     Ted               ted126
    

        DROP TRIGGER IF EXISTS `point_name_update`//
        CREATE TRIGGER `point_name_update` 
    
        BEFORE UPDATE ON `map-points`
         FOR EACH ROW BEGIN
            SET NEW.point_name = concat(trim(lower(SUBSTRING(NEW.point_title,1,INSTR(NEW.point_title, ' ')))),NEW.id);
          END
        //
    

    然而,我不知道如何处理特德的“点”标题字段中没有空格的情况。该记录的伪密钥值仅为“126”。

    有人对此有想法吗?

    谢谢,

    1 回复  |  直到 14 年前
        1
  •  0
  •   Scott    14 年前

    有多种方法可以剥下这只猫的皮,我发现我可以使用SUBSTRING\u INDEX(),而不是:

    point_name_update // 创建触发器 点名称更新

    更新之前 map-points 每行开始 结束