在一个数据表中存有许多不同的正则表达式,简单如下aid regex1 [a-f4-9]*
2 abcd(.*)
3 sd(f+)dac
4 (.+?)698d
给定一个字符串,如ecd87addc,应该如何写sql语句,才能在该表中查询与这个字符串匹配的正则表达式?或者有没有更好的解决方法?望高手不吝赐教!

解决方案 »

  1.   

    select * from t_table where 1='ecd87addc' regexp aidregex
      

  2.   

    yangxiao_jiang(哈哈) 
         你好,你的查询语句通不过,查询结果是显示出数据表中的所有记录
      

  3.   

    你的版本是多少,我的是5.0.37-community-nt,我这里正常。
      

  4.   

    我的版本是MySQL - 4.1.11-nt
      

  5.   

    MySQL - 4.1.11-nt 我这里没有这个版本的,帮不上你了。
      

  6.   

    ------  ----------------------------------------
    table1  CREATE TABLE `table1` (                 
              `aidregex` char(20) NOT NULL,         
              PRIMARY KEY (`aidregex`)              
            ) ENGINE=InnoDB DEFAULT CHARSET=gb2312  
    ------  ----------------------------------------
    select * from table1 where '1cd87addc' REGEXP aidregex;
    ------  ----------------------------------------query result(1 records)
    aidregex
    1[a-f4-9]*
      

  7.   

    奇怪,怎么仍然不行啊???!!!!-- --------------------------------------------------------
    -- phpMyAdmin SQL Dump
    -- version 2.8.0.1
    -- http://www.phpmyadmin.net
    -- 
    -- 主机: localhost
    -- 生成日期: 2007 年 06 月 13 日 11:12
    -- 服务器版本: 4.1.11
    -- PHP 版本: 4.4.7
    -- 
    -- 数据库: `test`
    -- -- ---------------------------------------------------------- 
    -- 表的结构 `t_table`
    -- CREATE TABLE `t_table` (
      `aid` int(11) NOT NULL auto_increment,
      `test_regex` varchar(255) NOT NULL default '',
      PRIMARY KEY  (`aid`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;-- 
    -- 导出表中的数据 `t_table`
    -- INSERT INTO `t_table` (`aid`, `test_regex`) VALUES (1, '[a-d]*'),
    (2, '[3-9]*'),
    (3, '[a-k]*'),
    (4, '1[a-f4-9]*');
    -- --------------------------------------------------------select * from t_table where '1cd87addc' REGEXP test_regex-- --------------------------------------------------------显示行 0 - 3 (4 总计, 查询花费 0.0006 秒)
    SQL 查询: 
    SELECT *
    FROM t_table
    WHERE '1cd87addc' REGEXP test_regex
    LIMIT 0 , 30结果如下:
    [a-d]*
    [3-9]*
    [a-k]*
    1[a-f4-9]*还是把所有的记录都查出来了?是不是数据库版本的问题啊?服务器上是这个版本啊,有没有其他的办法?