在字段中的Mysql通配符

时间:2015-06-10 10:06:07

标签: mysql sql regex wildcard

我有一个mysql数据库,我的表是:

Name      | passcode
----------------------
hi*       | 1111
----------------------
j?n       | 2222

我希望此查询的结果如下:

Select * from Users Where Name='hiiiiiiiiiiii'

查询结果是我的第一行和*和?就像一个通配符,但我在我的数据库字段中使用它

2 个答案:

答案 0 :(得分:0)

您不希望将通配符放在存储在数据库字段中的实际值中。要解决此示例,您需要在查询中连接外卡...

SELECT * FROM `Users` WHERE 'hiiiiii' LIKE CONCAT('%',`Name`,'%') 

答案 1 :(得分:0)

你可以tyr regexp:

SELECT * FROM Users WHERE 'hiiiiii'                REGEXP Name; -- hi*
SELECT * FROM Users WHERE 'jn'                     REGEXP Name; -- j?n
SELECT * FROM Users WHERE 'salaaaaaaaaaaaaaaaaaam' REGEXP Name; -- Sala*m

但是你应该小心,因为:

SELECT * FROM Users WHERE 'say hiiii to all!' REGEXP Name; -- hi*
SELECT * FROM Users WHERE 'Jn'                REGEXP Name; -- j?n
SELECT * FROM Users WHERE 'n'                 REGEXP Name; -- j?n

这就是为什么你应该在字段名称中指定更严格的模式...
我认为这不是性能的最佳解决方案......