如何使用替代字符搜索字符串?

时间:2016-05-20 02:03:59

标签: mysql

我有一个保存字符串的字段,例如:

"one two-tree"
"one-two-tree"
"one-two tree"
"one two tree"

当我执行SELECT时,我想要检索具有" - "的字符串。或" " (空间)。例如:

当我这样做时:

Select name from table where name="one two tree"

我希望它还带有空格或 - 的结果,在这种情况下返回上面列举的所有字符串。

这是否有通配符?

4 个答案:

答案 0 :(得分:1)

就标准SQL而言,您必须使用"或",或"喜欢"。取决于你想要什么。示例:从表中选择名称,其中名称为" one?two?tree"。

但是,mySQL支持REGEX扩展,它可以为您提供所需的内容:

http://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html

答案 1 :(得分:1)

一种选择是使用replace

select name
from yourtable
where replace(name, '-', ' ') = 'one two tree' 

答案 2 :(得分:1)

有,但速度很慢:您可以使用REGEXP

SELECT name
FROM table
WHERE name REGEXP 'one[- ]two[- ]tree'

或者您可以使用替换:

SELECT name
FROM table
WHERE REPLACE(name, '-', ' ') = 'one two three'

但最好的办法是在附加列中添加一个标准化name(例如,短划线总是替换为空格),这样就可以利用索引。

答案 3 :(得分:0)

您可以将LIKE条件与'%'一起使用(通配符运算符)。

e.g。

SELECT name from table_name WHERE name LIKE '%-%' OR name LIKE '% %'
-- will return all names that have `-` or ` `.