2017-10-30 9 views
0

母音で始まらないすべての都市を印刷したいし、母音で終わらないようにしてください。 私は、特定の文字で始める必要がないときに行う方法について、多くのチュートリアルがあることを知っています。しかし、私はそれを見つけることができず、いくつかの手紙を表現しています。母音で始まらない、または母音で終わる文字列を取得する

これは私が試したものです:

select distinct city 
from station 
where city not like '%[aeiou]%'; 

私は

where city not like '%a' 

を言うのであれば、私は手紙aで終了していない都市を取得します。

行う:where city not like '%[aeiou]%'; 2を組み合わせることである。

where city not like 'a%' 

私はa

だからと私の試みは文字で始まらない都市を取得します。 Idはエラーを投げず、それは私にリストを与えますが、正しい結果ではありません。実際にはリストは非常に大きいので、私が上に書いた表現が私に与えるものがわからない。私はいくつかの試みを試みましたが、これはおそらく最も修飾されたものです。

母音で始まらない、または母音で終わるすべての都市のリストを取得するにはどうすればよいですか?

+0

あなたはどのデータベースを使用していますか? –

+1

あなたは答えをここに見つけるでしょう:https://stackoverflow.com/questions/36627613/sql-query-to-check-if-a-name-begins-and-ends-with-a-vowel –

答えて

3

あなたは単にSUBSTRING()機能を使用することができます。

WHERE LOWER(SUBSTRING(city, 1, 1)) NOT IN ('a', 'e', 'i', 'o', 'u') 
AND LOWER(SUBSTRING(city, -1, 1)) NOT IN ('a', 'e', 'i', 'o', 'u') 

ここでもLOWER()関数を使用していますので、大文字と同じです。

2

MySQLでは、正規表現を使用します。このパターン: - 私の知識に - それの文字'[aeiou]'の配列と名前を持っていない都市のため

where city not like '%[aeiou]%'; 

は、すべての都市が返されます。上記のパターンは、likeでサポートされているSQL ServerやSybaseでより意味のあるものになります。

正規表現は次のようになります。

where city regexp '^[^aeiouAEIOU].*[^aeiouAEIOU]$' 
1

私は、これはあなたが何をしようとしてあると思う:

declare @Station table (city varchar(100)) 
    insert into @station select 'Houston' 
    insert into @station select 'Astoria' 
    insert into @station select 'enigma' 


    select distinct 
     city 
    from 
     @Station 
    where 
     city not like '[aeiou]%[aeiou]' 
+1

いいえ、それですない。 LIKEは角括弧では機能しません。また、この質問にはMySQLが付いていることにも注意してください。 – fancyPants

関連する問題