我有一个保存字符串的字段,例如:
"one two-tree"
"one-two-tree"
"one-two tree"
"one two tree"
当我执行SELECT时,我想要检索具有" - "的字符串。或" " (空间)。例如:
当我这样做时:
Select name from table where name="one two tree"
我希望它还带有空格或 - 的结果,在这种情况下返回上面列举的所有字符串。
这是否有通配符?
答案 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 ` `.