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式では、アンダースコア(_)は任意の1文字に一致するワイルドカードであり、パーセント(%)は0、1つ以上の文字に一致するワイルドカードです。

他の文字をエスケープ文字として使用できることに注意してください。バックスラッシュである必要はありません。バックスラッシュ自体は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 に答える