2

如果有人可以在这里帮助我,我很高兴。

我有一个表 Table1 和列 XXXXXX 的数据如下

XXXXXX
---------
1
2
1
2
x_y
A_12
3
12345_abcd

我希望输出为

XXXXXX
---------
1
2
3

我尝试了以下查询

select DISTINCT XXXXXX from Table1 where XXXXXX NOT LIKE '%_%';

也试过SELECT DISTINCT XXXXXX FROM Table1 WHERE CHAR ('_','XXXXXX')=0;

上面的查询正在从表中获取所有内容。任何人都可以在这个问题上帮助我。

4

3 回答 3

5

尝试:

WHERE  XXXXXX NOT LIKE '%\\_%' ESCAPE '\\' 

“转义”字符告诉 MySQL 下划线将被解释为文字下划线字符,而不是通配符。(在 LIKE 表达式中,下划线 ( _) 是匹配任何单个字符的通配符,就像百分号 ( %) 是匹配零个、一个或多个字符的通配符一样。

注意其他字符可以作为转义字符;它不必是反斜杠。反斜杠本身是 MySQL 中的转义字符,因此有一个反斜杠被识别为 LIKE 的转义字符,我们必须使用双反斜杠“ \\”。这使得 MySQL 将其识别为单个反斜杠字符。

例如,我们可以使用克拉“ ^”字符作为转义字符,如下所示:

WHERE  XXXXXX NOT LIKE '%^_%' ESCAPE '^'

%类似地,转义字符可用于使用 LIKE 运算符搜索文字百分号,如下所示:

WHERE foo LIKE '%\\%%' ESCAPE '\\'

(这将搜索 foo 中出现的百分号字符。)


作为 NOT LIKE 运算符的替代方法,我们可以使用“NOT REGEXP”运算符来排除 foo 包含下划线字符的行,如下所示:

WHERE foo NOT REGEXP '_'
于 2013-01-18T17:23:21.303 回答
1

尝试这个

   select XXXXXX from Table1 
   where XXXXXX NOT LIKE '%_%'
   GROUP BY XXXXXX 

编辑

尝试这个

   select XXXXXX from Table1 
   where  XXXXXX NOT LIKE '%\\_%' ESCAPE '\\'
   GROUP BY XXXXXX 

在这里演示 SQLFIDDLE

于 2013-01-18T17:23:00.080 回答
0
Select Distinct coolColumnName 
from CoolTableName
WHERE coolColumnName not like '%_%'
于 2013-01-18T17:23:12.640 回答