2009-06-15 7 views
0

こんにちは、私はいくつかのCSV を引き出すために、単純なMySQLのクエリを書いているが、句が任意のアイデアを動作するようには思えませんどこ偉大な支援MySQLのクエリ

select SUBSTRING_INDEX(email,'@',1)AS email , clear , SUBSTRING(email,LOCATE('@',email)+1) as domain where domain like 'somestring' from sometable; 

答えて

1
SELECT 
    SUBSTRING_INDEX(email,'@',1) AS email, 
    clear, 
    SUBSTRING(email,LOCATE('@',email)+1) AS domain 
FROM sometable 
WHERE domain LIKE '%somestring%'; 
+0

Olafurの素早い体系化をお寄せいただきありがとうございます。私は誤って自分自身で行う前に投稿を提出しました。 –

+0

それは、mysqlの不平等を動作しませんでした ERROR 1054(42S22): 'where句'の 'ドメイン' –

1

ジョンのコードとなり、すべての正しいはずです。私の唯一の追加は、に常に SQLが動作しないときのSQL構文を見直すことです。

複雑なSQLを作成する能力が向上します。しかし、単純に何かを書き込んでからここに投稿するとロジックが慎重になります。私はあなたが言ったことではありませんが、あなたのSQLはすべて混在して見える...それはあなたの構文を検証していないようです...

あなたのコメントは、ドメインが無効です: 'Domain'は正しいフィールド名ですか?そうでない場合は、正しいフィールド名は何ですか。それを挿入できます。私はコードがされるべきだと思う:

SELECT 
    SUBSTRING_INDEX(email,'@',1) AS email, 
    clear, 
    SUBSTRING(email,LOCATE('@',email)+1) AS domain 
FROM sometable 
WHERE email LIKE '%@somestring%'; 

それとも

SELECT 
    SUBSTRING_INDEX(email,'@',1) AS email, 
    clear, 
    SUBSTRING(email,LOCATE('@',email)+1) AS domain 
FROM sometable 
WHERE SUBSTRING(email,LOCATE('@',email)+1) LIKE '%somestring%'; 

よろしく、
フランク

0

これは正しいクエリです。イムは、そのテーブルのフィールドの一つであると仮定しています。ドメイン「%のsomestringようsometable からドメイン として

SELECT substring_index(email, '@', 1) as email,clear, substring(email, locate('@',email)+1) as domain from table where substring(email, locate('@',email)+1) like '%somestring%'. 
0

選択SUBSTRING_INDEX(電子メール、 '@'、1)電子メールは、明確な、SUBSTRING AS(電子メールは、(LOCATE '@'、電子メール)+1) % '

のような演算子は "%"文字で使用する必要があります。