我在表格中有一个包含基因名称的列。基因名称的例子是dnaA,BN_001,BN_0023等......
我希望所有基因名称都不包含下划线。我用过的陈述是这样的:
SELECT Gene from cds WHERE Gene NOT LIKE '%_%';
然而,这并没有返回正确的基因名称。问题是什么?我使用MYSQL作为RDBMS。
谢谢
答案 0 :(得分:2)
你应该写
LIKE '%\_%' ESCAPE '\'
因为_在SQL中意味着什么,所以你必须通过\
来逃避它答案 1 :(得分:1)
问题是_
是任何单个字符的like
语句中的占位符。
相反,您可以使用
SELECT Gene from cds
WHERE instr(Gene, '_') = 0
答案 2 :(得分:1)
SELECT Gene from cds WHERE Gene NOT LIKE '%\_%';
答案 3 :(得分:1)
_
是LIKE
运算符的特殊字符。你必须逃避它,请尝试Gene NOT LIKE '%\_%';
答案 4 :(得分:1)
在MySQL中,下划线表示like
模式中的任何单个字符。您可以阅读documentation,但这里是相关部分:
使用LIKE,您可以在模式中使用以下两个通配符。
Character Description
% Matches any number of characters, even zero characters
_ Matches exactly one character
为此,只需使用locate()
:
where locate('_', gene) = 0
答案 5 :(得分:1)
你需要逃避下划线,MySQL似乎支持标准SQL' ESCAPE
SELECT Gene from cds WHERE Gene NOT LIKE '%\_%' ESCAPE '\';
答案 6 :(得分:1)